bafenghan5 发表于 2013-11-2 01:14

这个最小二乘法模态参数识别程序哪里出错了?

%最小二乘法模态参数识别(复模态—频响函数实虚部)
clear
clc
close all hidden
format long
global mn
%fni=input('最小二乘法模态参数识别-输入数据文件名','s');
%fid=fopen(fni,'r')
%mn=fscanf(fid,'%f',1);   %模态阶数
%df=fscanf(fid,'%d',1);   %频率间隔
%f0=fscanf(fid,'%d',mn);    %模态频率初值数组
%d0=fscanf(fid,'%d',mn);    %模态阻尼比初值数组
%fno=fscanf(fid,'%d',1);    %读入输出数据文件名
%b=fscanf(fid,'%f',); %实测频响函数实部虚部数据
%status=fclose(fid);
mn=3;df=0.1953125;f0=;d0=;fno='out8_2a.mat';
%tt=0:0.01:20;
%y=(1-0.2*tt).*sin(2*pi*5*tt);
%yy=fft(y);y=yy(1:1000);
%H0=;
load y
b=;
f=0:df:(length(b(1,:))-1)*df;
w=2*pi*f;
H=b(1,:)+b(2,:)*i;
w0=2*pi*f0;
for j=1:mn
    l=4*(j-1);
    x0(l+1:l+4)=[-w0(j)*d0(j),w0(j)*sqrt(1-d0(j)^2),1,1];
end
x=lsqcurvefit('fun82',x0,w,H);
for j=1:mn
    l=4*(j-1);
    c=x(l+1)+i*x(l+2);
    d=x(l+3)+i*x(l+4);
    F(j)=abs(c)/(2*pi);
    D(j)=-real(c)/abs(c);
    S(j)=d;
end
H1=fun82(x,w);
subplot(2,1,1);
plot(f,real(H),':',f,real(H1));
xlabel('频率(Hz)');
ylabel('实部');
legend('实测','拟合');
grid on;
subplot(2,1,2);
plot(f,imag(H),':',f,imag(H1),'r');
xlabel('频率(Hz)');
ylabel('虚部');
legend('实测','拟合');
grid on;
fid=fopen(fno,'w');
fprintf(fid,'   频率(Hz)   阻尼比(%%)   振型系数\n');
for k=1:mn
   fprintf(fid,'%10.4f%10.4f%10.6f\n',F(k),D(k)*100,imag(S(k)));
end
status=fclose(fid);


其中b=;一旦改变y响亮的长度,比如改成b=;就会出现错误。请教一下是怎么回事?

ChaChing 发表于 2013-11-2 09:38

求助完整格式:出错代码和出错提示

bafenghan5 发表于 2013-11-2 12:34

ChaChing 发表于 2013-11-2 09:38 static/image/common/back.gif
求助完整格式:出错代码和出错提示

??? Error using ==> qr
Complex sparse QR is not yet available.

Error in ==> aprecon at 57
   RPCMTX = qr(TM(:,p));

Error in ==> trdog at 47
          = feval(pcmtx,H,pcoptions,DM,DG,varargin{:});

Error in ==> snls at 334
       = trdog(x,g,A,D,delta,dv,...

Error in ==> lsqncommon at 153
    =...

Error in ==> lsqcurvefit at 258
= ...

Error in ==> cx8_2a at 31
x=lsqcurvefit('fun82',x0,w,H);

这是把y向量的长度改成b=;出现的错误

ChaChing 发表于 2013-11-7 15:41

bafenghan5 发表于 2013-11-2 12:34 static/image/common/back.gif
??? Error using ==> qr
Complex sparse QR is not yet available.



感觉楼主提供的不够完整!? fun82? y?
无法复製楼主的情况, 又不曾有此经验, 实在无法猜测...

牛小贱 发表于 2013-12-8 19:57

估计是数据饱和或者是不收敛了!!希望楼主好好再调试一下程序……
页: [1]
查看完整版本: 这个最小二乘法模态参数识别程序哪里出错了?