
简介基于MATLAB的汽车理论第六章振动分析文档面向车辆工程专业学生、课程设计者以及需要借助编程实现振动响应计算的工程师。内容系统展示了车轮、车身、人体-座椅三部分的动态关系围绕频率响应函数 |z1/q|、|z2/z1|、|p/z2|给出从参数定义阻尼比 zeta、固有频率 f0、刚度比 gamma、质量比 mu、座椅参数 fs 等到 0~36Hz 频段逐点采样、传递函数计算以及幅频特性曲线与加速度均方根值谱Gz1(f)、Gz2(f)、Ga(f)绘制的完整流程。其中图1~图3分别为车轮、车身-车轮、人体-座椅的幅频特性图4~图6为对应的加速度均方根值谱覆盖车辆平顺性分析的关键环节。文档中的 MATLAB 代码可直接复现还可输出加权加速度均方根值 aw 与 Law 值以评估舒适性适合课程作业参考或车辆振动研究的进阶起点。压缩包内仅1个doc文件大小163KB容量小但知识点密集目前已有72人学习值得汽车理论、振动分析及 MATLAB 仿真学习者下载利用。1. 汽车振动分析从路面谱到加权加速度一套代码吃透第六章做汽车理论第六章平顺性作业时最卡人的不是公式推导而是怎么把教材上的频响函数变成能跑的 MATLAB 代码。这份文档里的程序把整条振动传递链一次算完路面不平度激励输入经过车轮、车身两个质量块再串上座椅-人体模型同时输出三张幅频特性图、三张加速度均方根值谱图最后用 ISO 2631 的频率加权函数算出加权加速度均方根值 aw 和对应的 Law 值。整套代码适合两类人一是正在做第六章频响特性与平顺性指标计算的学生照着跑一遍能直接对应教材图和课后题二是做悬架参数选型和座椅隔振设计的人把 f0、zeta、gamma、mu、fs、zeta_s 这些参数扫一遍就能看出哪个参数对车身加速度、动挠度、相对动载的影响最大。2. 双质量与三质量模型三个幅频特性的物理含义与公式约定2.1 振动传递链的拆解顺序代码里用到的模型是典型的双质量车身-车轮模型再串联一个座椅-人体单质量模型形成三自由度传递链。路面不平度 q 激励车轮质量 m1车轮通过悬架弹簧与阻尼连接到车身质量 m2车身再通过座椅弹簧与阻尼连接到人体-座椅质量。这里的三个频率响应函数分别对应传递链的不同环节|z1/q|是车轮质量对路面输入的位移幅频特性反映非簧载质量对路面激励的直接响应|z2/z1|是车身质量对车轮质量的位移幅频特性反映悬架系统对振动的衰减能力|p/z2|是座椅-人体系统对车身质量的位移幅频特性反映座椅隔振效果。三者相乘得到|p/q|即人体位移对路面输入的完整传递函数。代码里的z2_qz2_z1.*z1_q就是这个串联关系的体现后面计算人体加速度谱Ga时直接复用了这个乘积。2.2 参数表每个变量对应什么物理结构这段程序里参数比较多第一次看容易混淆。表 2-1 给出了代码中出现的关键参数及其对应含义参数数值物理含义对响应的影响方向f01.5 Hz车身簧载质量固有频率决定低频共振峰位置zeta0.25悬架阻尼比抑制车身共振峰幅值gamma9质量比簧载质量/非簧载质量影响高频共振峰幅值mu10非簧载质量比影响低频段响应fs3 Hz座椅-人体系统固有频率决定人体敏感频段的共振位置zeta_s0.25座椅阻尼比抑制座椅共振峰u20 m/s车速影响路面输入谱的幅值Gq_n02.56e-8路面不平度系数路面粗糙度等级n00.1参考空间频率与 Gq_n0 配合构成路面谱这些参数在汽车理论教材第六章都有标准取值代码直接用了教材默认值。其中 gamma 和 mu 在后续灵敏度分析中的表现差异很大因为车轮部分|z1/q|对质量比更敏感而车身部分|z2/z1|主要受 zeta 控制。2.3 Delta 表达式的物理解读Delta是整套代码里最长的一个表达式它是双质量系统特征方程的分母项Delta[(1-lambda.^2).*(1gamma-1/mu*lambda.^2)-1].^2 ... 4*zeta^2.*lambda.^2.*[gamma-(1/mu1)*lambda.^2].^2;这段代码反映了双质量系统两个共振峰的耦合关系。当 lambda 接近 1激励频率接近车身固有频率时第一项接近 0第二项主导Delta的最小值点对应车身共振峰当 lambda 较大时1/mu*lambda^2项占主导对应车轮部分的高频共振。正是因为Delta里同时包含了 f0、zeta、gamma、mu 四个参数幅频特性曲线才能在低频段和高频段各出现一个共振峰。用plot而非loglog的话低频段曲线会被压缩在零点附近看不清楚所以代码里选用对数坐标出图这是绘制宽频带幅频特性的标准做法。3. 用 loglog 绘制幅频特性图第一段程序的完整复现3.1 核心代码段与绘图细节第一段程序完成三张幅频特性图和三张加速度谱图的绘制。先看幅频特性部分的核心代码clear; clc; f01.5; zeta0.25; gamma9; mu10; fs3; zeta_s0.25; u20; % 车速 m/s Gq_n02.56/10^8; n00.1; delta_f0.2; N180; f0:0.2:36; % 频率采样 0~36Hz lambdaf/f0; Delta[(1-lambda.^2).*(1gamma-1/mu*lambda.^2)-1].^2 ... 4*zeta^2.*lambda.^2.*[gamma-(1/mu1)*lambda.^2].^2; z1_qgamma*sqrt(((1-lambda.^2).^24*zeta.^2*lambda.^2)./Delta); figure(1) loglog(f,z1_q,b) % 双对数坐标绘制幅频特性 xlabel(激振频率 f/Hz) ylabel(|z1/q|) title(车轮部分 z1~q 的幅频特性) grid on这段代码的关键在于lambdaf/f0把绝对频率归一化到车身固有频率这样幅频特性的形状只与 zeta、gamma、mu 相关与车速 u 无关。f0:0.2:36生成的频率向量覆盖了 0~36Hz对应路面激励的主要能量区间。loglog命令对 f 和 z1_q 同时取对数坐标这样低频段和小幅值部分不会被压缩到原点附近。车身与座椅部分采用相同结构z2_z1sqrt((14*zeta^2*lambda.^2)./((1-lambda.^2).^24*zeta^2*lambda.^2)); figure(2) loglog(f,z2_z1,g) xlabel(激振频率 f/Hz); ylabel(|z2/z1|) title(车身-车轮部分 |z2/z1| 的幅频特性) lambda_sf/fs; p_z2sqrt((1(2*zeta_s*lambda_s).^2)./((1-lambda_s.^2).^2(2*zeta_s*lambda_s).^2)); figure(3) loglog(f,p_z2,r) xlabel(激振频率 f/Hz); ylabel(|p/z2|) title(人体-座椅系统 |p/z2| 的幅频特性)3.2 f0 的隐患与处理第一段程序里f0:0.2:36会在 f0 处产生log(0)警告虽然loglog会自动忽略非正值点但曲线在最低频段会凭空少一个点。第二段程序把起点改成f10^(-20):0.2:36这个值足够小既避免了对数坐标警告又不会影响曲线形状。不过用1e-20作为积分下限会带来一个新问题后面用trapz做数值积分时这段从 1e-20 到 0.2 的区间只有两个采样点线性插值会高估这一小段的积分贡献。实际操作中我更倾向于用f0.1:0.2:36既保证了低频段采样点完整又不会让积分起点虚低。3.3 加速度谱的计算逻辑幅频特性只是第一步真正用来评价平顺性的是加速度均方根值谱。代码先把位移幅频特性乘以(2*pi*f)^2转换成加速度幅频特性再与路面输入谱密度桥接H_jw1(2*pi*f).^2.*z1_q; % 位移响应转加速度响应 Gz1_fH_jw1./f*sqrt(Gq_n0*n0^2*u); % 乘以路面谱得到加速度谱 figure(4) loglog(f,Gz1_f,y) xlabel(激振频率 f/Hz); ylabel(Gz1(f)) title(车轮加速度均方根值谱)这里H_jw1./f*sqrt(Gq_n0*n0^2*u)的写法是路面位移谱密度到加速度输出谱的桥接公式。Gq_n0*n0^2*u是路面输入速度谱密度的简化表达H_jw1是加速度频响函数两者的乘积再除以 f 完成从位移谱密度到加速度谱密度的量纲转换。同理Gz2_f和Ga都是用对应环节的频响函数乘以上述桥接项得到的。4. 加权加速度均方根值从加速度谱到 aw 与 Law 的计算链条4.1 ISO 2631 四段频率加权函数平顺性评价不能直接对加速度谱积分因为人体对不同频率段的振动敏感度差异很大。依据 ISO 2631 标准加权函数按频率分四段0.5~2Hz 加权系数恒为 0.52~4Hz 从 0.5 线性升到 14~12.5Hz 保持 112.5~36Hz 按 12.5/f 衰减。代码里的实现方式是边遍历边累加for i1:180 if(f(i)0.5 f(i)2) f1(i)f(i); x1(i)0.5^2.*Ga(i).^2; end if(f(i)2 f(i)4) f2(i)f(i); x2(i)(f(i)/4).^2.*Ga(i)^2; end if(f(i)4 f(i)12.5) f3(i)f(i); x3(i)Ga(i)^2; end if(f(i)12.5 f(i)36) f4(i)f(i); x4(i)(12.5/f(i)).^2.*Ga(i)^2; end end awsqrt(trapz(f1,x1)trapz(f2,x2)trapz(f3,x3)trapz(f4,x4)); Law20*log10(aw*10^6);Ga(i).^2是人体加速度功率谱密度乘以对应频段的加权系数平方后再积分得到的就是加权加速度均方根值。这里Law20*log10(aw*10^6)是以 1e-6 m/s^2 为参考基准把加速度换算成分贝标度便于不同车型之间做横向对比。这段代码有一个明显的坑f1、x1等数组在未命中频率区间时保持 0 值trapz对非严格单调递增的 x 轴数据会报警告。虽然 0 值的区间对积分结果没有影响但这样写不够稳健改成逻辑索引更清晰。4.2 改进版本逻辑索引替代循环赋值idx1 (f0.5) (f2); idx2 (f2) (f4); idx3 (f4) (f12.5); idx4 (f12.5) (f36); aw sqrt(trapz(f(idx1), (0.5^2).*Ga(idx1).^2) ... trapz(f(idx2), ((f(idx2)/4).^2).*Ga(idx2).^2) ... trapz(f(idx3), Ga(idx3).^2) ... trapz(f(idx4), ((12.5./f(idx4)).^2).*Ga(idx4).^2)); Law 20*log10(aw*10^6);两种写法积分结果完全一致但逻辑索引版本避免了trapz对非单调 x 数据的警告也省掉了循环里f1(i)f(i)这种容易出错的稀疏赋值。改完之后代码量减少一半可读性更好。4.3 数值结果验证第二段程序跑完输出的基准数值是指标数值说明sigma_q0.3523路面输入位移均方根值sigma_z10.2391车轮位移均方根值sigma_z20.0168车身位移均方根值sigma_a0.0161人体位移均方根值aw0.0116 m/s^2加权加速度均方根值Law81.3030 dB加权加速度声级注意sigma_z2远小于sigma_z1这说明悬架系统对车身位移的隔振率在 90% 以上。人体位移均方根值sigma_a与sigma_z2接近是因为座椅固有频率 fs3Hz 避开了人体最敏感的 4~8Hz 区间。这套数值可以作为后续改参数时的基准所有参数调整的效果都用相对这个基准的 dB 变化来度量。5. 参数灵敏度扫描fs、zeta_s、f0、zeta、gamma、mu 对平顺性的影响5.1 座椅参数扫描linspace 生成参数序列第三段程序用linspace生成参数序列在固定其他参数的情况下逐一扫描座椅固有频率 fs 和座椅阻尼比 zeta_s观察 aw 和 Law 的变化趋势fs1linspace(1.5,6,100); % 座椅固有频率扫描区间 zeta_s1linspace(0.125,0.5,100); % 座椅阻尼比扫描区间 for k1:100 % 用 fs1(k) 替换固定 fs其余计算流程不变 lambda_sf/fs1(k); p_z2sqrt((1(2*zeta_s*lambda_s).^2)./((1-lambda_s.^2).^2(2*zeta_s*lambda_s).^2)); % ... 计算 Ga然后做加权积分得到 aw(k)、Law(k) end subplot(2,2,1) plot(fs1,aw) axis([1.2 6.5 0.008 0.017]) xlabel(激振频率 fs); ylabel(aw) title(aw 随激振频率的变化) subplot(2,2,2) plot(fs1,Law) axis([1.2 6.5 78 85]) xlabel(激振频率 fs); ylabel(Law) title(Law 随激振频率的变化)linspace(1.5,6,100)生成 100 个等间距点覆盖 fs 从 1.5Hz 到 6Hz 的区间。每次循环只改变 fs1(k)其他参数保持基准值这样 aw 的变化完全由 fs 引起是标准的单因素敏感性分析。subplot(2,2,1)的布局把 fs 对 aw 和 Law 的影响上下排列方便对比两条曲线的变化趋势是否一致。5.2 四参数灵敏度分析相对基准的 dB 表示第三问程序把灵敏度分析扩展到 f0、zeta、gamma、mu 四个参数评估指标从单一的车身加速度扩展到三个车身加速度sigma_z2、悬架动挠度sigma_fd、相对动载sigma_FdG。核心是先计算基准值 a、b、c再逐一扫描参数计算相对变化f01linspace(0.25,3,100); % f0 扫描区间 zeta1linspace(0.125,0.5,100); % zeta 扫描区间 gamma1linspace(4.5,18,100); % gamma 扫描区间 mu1linspace(5,20,100); % mu 扫描区间 for i1:100 lambdaf/f01(i); Delta[(1-lambda.^2).*(1gamma-1/mu*lambda.^2)-1].^2 ... 4*zeta^2.*lambda.^2.*[gamma-(1/mu1)*lambda.^2].^2; z2_qz1_q.*z2_z1; % 用当前 f01(i) 对应的 z1_q、z2_z1 Gz2_fH_jw2./f*sqrt(Gq_n0*n0^2*u); sigma_z2(i)20*log10(sqrt(trapz(f,Gz2_f.^2))/a); sigma_fd(i)20*log10(sqrt(trapz(f,fd_q.^2*4*pi^2*Gq_n0*n0^2*u))/b); sigma_FdG(i)20*log10(sqrt(trapz(f,FdG_q.^2*4*pi^2*Gq_n0*n0^2*u))/c); end用20*log10(当前值/基准值)的好处是让三个量纲不同的指标放到同一张图上比较。0dB 表示与基准值相同3dB 表示比基准值大约 1.41 倍负值表示比基准值小。这样 f0、zeta、gamma、mu 的变化对三个指标的影响方向和程度一眼就能看出来。代码里fd_q和FdG_q分别是动挠度和相对动载的频响函数它们各自乘以路面输入功率谱密度项后积分开方得到对应指标的均方根值再与基准 b、c 做比较。5.3 四个图怎么读运行完第三问程序后四个图分别展示单个参数变化时三个指标的 dB 变化。读图时重点看几个趋势f0 增大时车身加速度sigma_z2的曲线基本走平动挠度sigma_fd明显下降相对动载sigma_FdG略有上升。这是因为固有频率提高后悬架变硬动挠度被压缩但车轮动载变大舒适性指标的取舍关系非常直观。zeta 增大时sigma_z2和sigma_FdG同步下降但sigma_fd在阻尼比超过 0.3 后基本不再变化说明阻尼对动挠度的抑制存在饱和效应。gamma 和 mu 的影响相对温和四个参数里对三个指标综合影响最大的是 f0 和 zeta这与悬架设计的直觉一致固有频率和阻尼比是平顺性调校的第一优先参数。6. 六个易踩的坑与一个封装思路6.1 代码运行中的常见问题第一段程序f0:0.2:36在loglog处会报警告不是错误但会让人紧张把起点改成0.1即可。第二段程序f10^(-20)的写法虽然解决了对数警告但用trapz积分时会把 1e-20 到 0.2 的空区间也计入建议统一用0.1:0.2:36。加权积分那段f1数组在未命中频率区间时保持 0trapz对非严格单调递增的 x 数据会报警告。虽然不影响结果但推荐用逻辑索引方式改写代码更干净。第三问程序里FdG_q的计算公式中lambda.^2/(1mu)-1部分和Delta用的是同一组变量修改基准参数后要确认Delta同步更新否则会出现响应曲线与基准值不匹配的问题。6.2 参数扫描逻辑的进阶用法把灵敏度分析的循环体封装成独立函数可以进一步做参数寻优。核心思路是把 aw 最小值作为目标函数用fminsearch自动搜索最优的 fs 与 zeta_s 组合function aw calc_aw(params) fs params(1); zeta_s params(2); % 复用第 4 节计算流程最终输出 aw end options optimset(Display,iter); [x_opt, fval] fminsearch(calc_aw, [3, 0.25], options);fminsearch是 MATLAB 自带的无约束优化函数不需要优化工具箱也能运行。初始点取基准参数[3, 0.25]迭代过程中会自动尝试不同的 fs 与 zeta_s 组合最终收敛到 aw 最小的座椅参数。相比手工扫描 100 个点只能看趋势这种方式的优势是直接给出最优数值解——当然实际悬架设计还要兼顾动挠度和相对动载因此更合理的做法是把目标函数改成aw w1*sigma_fd w2*sigma_FdG的加权和用权重 w1、w2 控制三个指标的相对优先级。这样一套代码其实已经具备完整的平顺性参数优化框架直接套用就可以做不同路面等级、不同车速下的悬架参数匹配。本文还有配套的精品资源点击获取