机械振动 发表于 2012-3-26 21:50

求助各位高手,关于matlab中阻尼比和座椅处加速度的函数拟合问题

编写一个程序,想要作图表示出在车身固有频率一定的情况下车身加速度和车辆悬挂系统阻尼比的关系,但是程序运行时总是出现
Warning: Polynomial is not unique; degree >= number of data points.
这样的问题,我想可能是函数拟合错了,请问各位高手这个函数的拟合最好是用什么函数,怎样拟合?
我用的是多项式拟合,这是我程序的一部分
    A=polyfit(ksi,acc,3);
       ksi1=0.1:0.001:0.4;
    acc1=polyval(A,ksi);
    plot(ksi1,acc1,ksi,acc,'r*');
求助各位高手!!

机械振动 发表于 2012-3-26 21:51

下面是我的原程序。除了求加速度外还有相对动载荷、负重轮动行程和减震器的耗散功

clear
ms=21600;%整车悬置质量
mh=10800;%半车悬置质量
mt=80;%负重轮质量
g=9.8;
v=40/3.6;%车速,单位m/s
kw=ms*g/12/0.021;%轮胎刚度
I=34101.428;%半车相对y轴的转动惯量
n=6;%一侧负重轮个数
r=3;%一侧减震器个数
l=;%各负重轮轴心坐标
M=diag();%生成质量矩阵
p=;


N=1000;%积分步数

nl=0.011;%路面不平度下限空间频率
nh=2.83;%路面不平度上限空间频率
fl=nl*v;%路面不平度下限时间频率
fh=nh*v;%路面不平度上限时间频率
df=(fh-fl)/(N-1);%积分步长
tao=(l-l(1))/v*(-1i);%不同车轮间输入激励的时间延迟

f0=0.8:0.1:2;%车身固有振动频率的选择范围
zeta=0.1:0.05:0.4;

acc=zeros(length(f0),length(zeta));%定义加速度存储空间
dxch=zeros(length(f0),length(zeta));%定义相对动行程存储空间
xddz=zeros(length(f0),length(zeta));%定义相对载荷存储空间
hsg=zeros(length(f0),length(zeta));%定义耗散功存储空间

nk=0;%k计数器清零
for fn=0.8:0.2:2.0
    k=(2*pi*fn)^2*mh/n;%悬挂系统的刚度
    nk=nk+1;
    K=[n*k,k*(l(1)+l(2)+l(3)+l(4)+l(5)+l(6)),-k,-k,-k,-k,-k,-k;
      k*(l(1)+l(2)+l(3)+l(4)+l(5)+l(6)),k*(l(1)^2+l(2)^2+l(3)^2+l(4)^2+l(5)^2+l(6)^2),-l(1)*k,-l(2)*k,-l(3)*k,-l(4)*k,-l(5)*k,-l(6)*k;
      -k,-l(1)*k,k+kw,0,0,0,0,0;
-k,-l(2)*k,0,k+kw,0,0,0,0;
-k,-l(3)*k,0,0,k+kw,0,0,0;
-k,-l(4)*k,0,0,0,k+kw,0,0;
-k,-l(5)*k,0,0,0,0,k+kw,0;
-k,-l(6)*k,0,0,0,0,0,k+kw];%生成刚度矩阵


nc=0;%c计数器清零
for ksi=0.1:0.05:0.4
    c=2*ksi*sqrt(n*k*mh)/r;%悬挂系统的阻尼
    nc=nc+1;
    C=[n*c,c*(l(1)+l(2)+l(3)+l(4)+l(5)+l(6)),-c,-c,-c,-c,-c,-c;   %生成阻尼矩阵
c*(l(1)+l(2)+l(3)+l(4)+l(5)+l(6)),c*(l(1)^2+l(2)^2+l(3)^2+l(4)^2+l(5)^2+l(6)^2),-l(1)*c,-l(2)*c,-l(3)*c,-l(4)*c,-l(5)*c,-l(6)*c;
-c,-l(1)*c,c,0,0,0,0,0;
-c,-l(2)*c,0,c,0,0,0,0;
-c,-l(3)*c,0,0,c,0,0,0;
-c,-l(4)*c,0,0,0,c,0,0;
-c,-l(5)*c,0,0,0,0,c,0;
-c,-l(6)*c,0,0,0,0,0,c];


    ac=0;%驾驶员处加速度
    dxc=0;%各负重轮处的动行程
    xd=0;%相对动载荷
    hs=0;%减震器的耗散功
   
    for i1=0:1:N-1;
      f=fl+i1*df;%路面不平度时间频率的选取
      w=2*pi*f;%路面输入的固有圆频率
      A=p*exp(tao*w)';
      B=1i*w*C-w^2*M+K;
      Hw=B\A;%求输入向量对输出向量的传递函数
      H1w=Hw(1);%求质心zc对第一负重轮路面输入的传递函数
      H2w=Hw(2);%求俯仰角对第一负重轮路面输入的传递函数
      H3w=Hw(3);%求第一负重轮的位移对第一负重轮路面输入的传递函数

   
   Haq=-w^2*(H1w+l(1)*H2w);%驾驶员处加速度对第一负重轮处路面输入的频响函数
   Hf1q1=H1w+l(1)*H2w-H3w;%第一负重轮动行程对第一负重轮处路面输入的频响函数
   Hfdq1=kw*(H3w-1)/(mt*g+ms*g/6);%第一负重轮处的相对动载荷对第一负重轮处路面输入的频响函数
   Hv1q1=1i*w*(H1w+l(1)*H2w-H3w);%第一负重轮的速度队第一负重轮处路面激励的频响函数
   
   ac=ac+(abs(Haq)).^2;
   dxc=dxc+(abs(Hf1q1)).^2;
   xd=xd+(abs(Hfdq1)).^2;
   hs=hs+(abs(Hv1q1)).^2;
   
    end
    f=fn;
   gqn0=4096*0.000001;%E级路面不平度系数
   n0=0.1;%路面不平度参考空间频率
   Gqf=gqn0*n0^2*v/f/f;
   acc=sqrt(ac*Gqf*df);%加速度均方根值
    dxch=sqrt(dxc*Gqf*df);%动行程均方根值
    xddz=sqrt(xd*Gqf*df);%相对动载荷均方根值
    hsg=hs*Gqf*df*c/2;%耗散功均方根值
    %加速度
    A=polyfit(ksi,acc,2);
       ksi1=0.1:0.001:0.4;
    acc1=polyval(A,ksi);
    plot(ksi1,acc1,ksi,acc,'r*');
title('E级路面v=40km/h');
xlabel('阻尼比');
ylabel('加速度均方根值(m/s^2)');

hold on
   
end
grid on
legend('f=0.8','f=1.0','f=1.2','f=1.4','f=1.6','f=1.8','f=2.0')

end




ChaChing 发表于 2012-3-28 01:52

回复 1 # 机械振动 的帖子

个人时间/专业有限, 仅试执行看看
LZ的ksi,acc皆为纯量(1*1), 可以polyfit两阶吗?

机械振动 发表于 2012-3-28 11:04

回复 3 # ChaChing 的帖子

就是不太清楚该polyfit几阶,或者使用其他拟合函数……突然自己觉得这是个车辆方面的问题,不是个matlab的问题……惶恐惶恐……元老受累了……有劳有劳

zivping 发表于 2012-3-29 16:29

本帖最后由 zivping 于 2012-3-29 16:29 编辑

不是很了解。帮忙doing起。和

ChaChing 发表于 2012-3-30 01:07

不太清楚该polyfit几阶??
1F:A=polyfit(ksi,acc,3);=> 3次
2F:A=polyfit(ksi,acc,2); => 2次
页: [1]
查看完整版本: 求助各位高手,关于matlab中阻尼比和座椅处加速度的函数拟合问题