24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 2049  |  回复: 4

leooja

铁虫 (初入文坛)

[求助] 关于王济老师《Matlab在振动信号处理中的应用》书中第八章8.3节 程序8.2a的问题

如题用该方法识别结构自振模态,总会提示:“??? Error using ==> qr
Complex sparse QR is not yet available.”
程序原代码如下:
%随机信号谱分析
%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
format
global mn
%%%%%%%%%%%%%%%%%%%
%打开数据文件
[filename,pathname]=uigetfile('*.xls','selectfile','MultiSelect', 'on');
l=length(filename);
fun=input('function type');         %(谱分析类型,1=自谱,2=互谱,3=频响,4=相干)
windos=input('windos type');        %(窗函数类型,1=矩形,2=汉宁,3=海宁,4=布莱克曼)
sf=input('simpling frequency');          %(采样频率)
N=input('lenght of fft');            %(FFT长度)
f0=[4,4.17,5,12.5,14.29,16.68];      %(模态频率初始值,估计情况确定)
d0=[0.05,0.05,0.05,0.05,0.05,0.05];   %(模态阻尼比初始值)
mn=6;
%建立输出矩阵
outmodex=zeros(l,18);
outmodey=zeros(l,18);
for ii=1:l;
    openpath=strcat(pathname,filename{ii});
    [data,text]=xlsread(openpath);   
    [m,n]=size(data);
    tt=0:1/sfm-1)/sf;
    tt=tt';
    %消除趋势项
    for jj=4:n
        p3=polyfit(tt,data(:,jj),3);
        data(:,jj)=data(:,jj)-polyval(p3,tt);
    end   
    x1=data(:,2);                    %(x为输入激励)
    x2=data(:,3);
    y1=data(:,4)-data(:,2);          %(y为相对时程)
    y2=data(:,5)-data(:,3);
    %频率向量
    f=0:sf/Nsf/2-sf/N);
    switch windos
        case 1                      %(矩形窗)
            w=boxcar(N);
        case 2
            w=hanning(N);          %(汉宁窗)
        case 3
            w=hamming(N);          %(海宁窗)
        case 4
            w=triang(N);           %(三角窗)
        otherwise
            w=boxcar(N);
    end
    switch fun
        case 1                      %(自谱)
            z1=spectrum.psd(y1,N,sf,w,N/2);
            z2=spectrum.psd(y2,N,sf,w,N/2);
        case 2                      %(互谱)
            z1=csd(x1,y1,N,sf,w,N/2);
            z2=csd(x2,y2,N,sf,w,N/2);
        case 3                      %(频响)
            z1=tfestimate(x1,y1,w,N/2,N,256);            
            z2=tfestimate(x2,y2,w,N/2,N,256);
        case 4
            z1=cohere(x1,y1,N,sf,w,N/2);
            z2=cohere(x2,y2,N,sf,w,N/2);
        otherwise            
    end
    figure(ii)                     %(可附加逻辑判断决定绘制及输出数据)
    nn=1:N/4;
    subplot(2,2,1);
    plot(f(nn),real(z1(nn)));
    xlabel('Hz');
    ylabel('real');
    subplot(2,2,2);
    plot(f(nn),imag(z1(nn)));
    xlabel('Hz');
    ylabel('imag');
    subplot(2,2,3);
    plot(f(nn),real(z2(nn)));
    xlabel('Hz');
    ylabel('real');
    subplot(2,2,4);
    plot(f(nn),imag(z2(nn)));
    xlabel('Hz');
    ylabel('imag');
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
    %最小二乘法计算模态,阻尼比及模态系数
    ff=0:0.5*sf/(length(z1)):0.5*(length(z1)-1)*sf/(length(z1));   
    ww=2*pi*ff;
    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     
    z1=z1';
    z2=z2';
    X1=lsqcurvefit('fun82',X0,ww,z1);
    X2=lsqcurvefit('fun82',X0,ww,z2);
    for j=1:mn;
        L=4*(j-1);
        %X向模态分析
        C1=X1(L+1)+1i*X1(L+2);
        D1=X1(L+3)+1i*X1(L+4);
        outmodex(ii,j)=abs(C1)/(2*pi);%模态频率
        outmodex(ii,j+6)=-real(C1)/abs(C1);%模态阻尼
       outmodex(ii,j+12)=D1;               %负振型系数
        %Y向模态分析
        C2=X2(L+1)+1i*X2(L+2);
        D2=X2(L+3)+1i*X2(L+4);
        outmodey(ii,j)=abs(C2)/(2*pi);
        outmodey(ii,j+6)=-real(C2)/abs(C2);
        outmodey(ii,j+12)=D2;
    end
    outmode=[outmodex;zeros(1,18);outmodey];
    modepath=strcat(pathname,'model',filename{ii});
    [status,message]=xlswrite(modepath,outmode);
end
其中“fun82”代码如下:
function M=fun82(X,W)
%通过模态参数计算拟合频响函数
%输入参数
%X-复模态参数向量
%W-频率变量向量
%输出参数
%M-拟合频响函数
global mn
M=zeros(1,length(W));
for K=0:mn-1;
    L=4*K;
    X1=X(L+1);%特征值实部
    X2=X(L+2);%特征值虚部
    X3=X(L+3);%特征值向量实部
    X4=X(L+4);%特征值向量虚部
    M=M-W.^2.*((X3+1i*X4)./(W*1i-(X1+1i*X2))+(X3-1i*X4)./(W*1i-(X1-1i*X2)));
end
全部为按照书中代码编程,为什么运行不了,望大神帮忙!
附件为原时程信号,方便大家试运行。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : w1.xlsx
  • 2014-09-04 15:59:58, 4.08 M
  • 附件 2 : w2.xlsx
  • 2014-09-04 16:00:37, 4.08 M

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hytao2012

铁杆木虫 (正式写手)

木头虫子

换一个高一点的版本的Matlab试试?
2楼2014-09-04 16:12:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

surrounding8

铜虫 (初入文坛)

书上源程序不是这样的吧
3楼2014-09-22 20:55:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pdikang

新虫 (小有名气)

先马回头学到再看
4楼2014-11-23 21:13:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wanlingstar

新虫 (正式写手)

王济那本书中的源程序确实存在问题,你可以看他数组的赋值都乱了

发自小木虫Android客户端
5楼2017-01-15 23:51:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 leooja 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 377求调剂 +6 by.ovo 2026-04-05 6/300 2026-04-05 22:18 by dongzh2009
[考研] 22408 总分320,一篇论文二作,两个国三,求调剂 +3 Leomulufu 2026-04-04 5/250 2026-04-05 19:04 by chongya
[考研] 298求调剂 +3 manman511 2026-04-05 3/150 2026-04-05 18:09 by kk112233
[考研] 313求调剂 +5 海日海日 2026-04-04 5/250 2026-04-05 15:52 by jndximd
[考研] 298求调剂 +7 manman511 2026-04-05 7/350 2026-04-05 10:29 by 唐沐儿
[考研] 能动调剂326专硕 +4 wan112233 2026-04-04 4/200 2026-04-04 22:47 by yu221
[考研] 考研调剂 +5 四川王涛 2026-04-04 5/250 2026-04-04 22:18 by 啵啵啵0119
[考研] 材料调剂 +10 懒羊羊轻置玉臀 2026-04-02 11/550 2026-04-04 21:56 by laoshidan
[考研] 环境285分,过六级,求调剂 +10 xhr12 2026-04-02 10/500 2026-04-04 21:53 by bn53987
[考研] 求生物学调剂 +14 15172915737 2026-04-01 14/700 2026-04-04 20:13 by babysonlkd
[考研] 302求调剂一志愿华中师范大学 +8 小江小江江江 2026-04-02 8/400 2026-04-04 19:50 by 蓝云思雨
[考研] 复试调剂 +6 范根培 2026-04-04 6/300 2026-04-04 14:27 by 土木硕士招生
[考研] 考研调剂 +4 zybz冲冲冲 2026-04-03 6/300 2026-04-04 13:08 by zybz冲冲冲
[考研] 22408,264求调剂 +3 ywh729 2026-04-03 4/200 2026-04-04 11:04 by ywh729
[考研] 297求调剂 +11 ljy20040718! 2026-04-03 13/650 2026-04-04 09:23 by 来看流星雨10
[考研] 071000生物学调剂 +8 知昭蔓 2026-04-02 8/400 2026-04-03 10:36 by macy2011
[考研] 26考研调剂 +4 Wnz.20030617 2026-04-01 5/250 2026-04-02 16:11 by 1939136013狗壮
[考研] 0710生物学,325求调剂 +3 mkkkkkl 2026-04-01 3/150 2026-04-02 09:48 by Jaylen.
[考研] 本2一志愿C9-333分,材料科学与工程,求调剂 +9 升升不降 2026-03-31 9/450 2026-03-31 18:01 by 无际的草原
[考研] 085601一志愿西北工业大学初试346 +4 085601初试346 2026-03-30 4/200 2026-03-31 07:47 by jp9609
信息提示
请填处理意见