plzhx.m

来自「matlab编写结构计算振型分解法」· M 代码 · 共 39 行

M
39
字号
function [ww,zhx1,A,m]=plzhx(a,b,dn)
%求解自振频率ww,振型zhx1---输入变量:质量阵a
%                                     层间刚度矩阵b
%                                     结构层数dn
%                           返回变量:自振频率ww,振型zhx1
m=diag(a);
[ik]=kzong(b,dn);

[A,x]=eig(ik,m);
x=diag(sqrt(x));

for i=1:dn
    [x1(i),j]=min(x);
    Agd(:,i)=A(:,j);
    x(j)=max(x)+1;
end
x=x1;
A=Agd;
for i=1:dn
        ww(i)=x(i);
        zhx1(:,i)=A(:,i)/A(dn,i);
end
if abs(min(min(zhx1)))>abs(max(max(zhx1)))
        T=abs(min(min(zhx1)));
    else
        T=abs(max(max(zhx1)));
    end
%绘图
for i=1:dn
        yi=0:0.25:dn;
        xi=interp1(0:dn,[0,zhx1(:,i)'],yi,'spline');
        subplot(2,dn,i)
        plot([0,zhx1(:,i)'],0:dn,'.',xi,yi);
        ylabel('X');
        xlabel('Z');
        title(['振型图\omega=',num2str(ww(i)),'']);
        text(zhx1(1,i),dn,'1','HorizontalAlignment','right','FontSize',16)
        axis([-1*T*1.5,T*1.5,0,dn]);
    end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?