matlab添加到静态工作区,错误使用,尝试将...添加到静态工作区问题

该博客主要讨论了如何使用MATLAB解决一个包含机械振源、隔振器和基座的振动系统的非耦合特征值问题。作者给出了详细的参数设置和代码实现,包括刚体质量矩阵、隔振器弹性矩阵、基座模态质量计算以及频率求解等关键步骤。在代码执行过程中遇到了符号变量赋值的问题。
摘要由CSDN通过智能技术生成

请问一下楼主,是怎么解决的啊,我也有同样的问题

function dcwp = run()

%参数设置

%机械振源激励

Q0=[1,1,1,1,0];

%几何尺寸

lc=0.8;bc=0.3;hc=0.3;ec=2.01e11;miuc=0.3;etac=0.005;pc=7850;

lb=1.0;bb=0.5;hb=0.006;eb=2.01e11;miub=0.3;etab=0.005;pb=7850;

lj=0.045;bj=0.051;hj=0.219;ej=2.254e7;miuj=0.44;etaj=0.47;pj=1103;

%刚体质量

mc=lc*bc*hc*pc;

%刚体转动惯量

Ixx=(mc/12)*(bc^2+hc^2);

Iyy=(mc/12)*(lc^2+hc^2);

Iyx = 0; Ixy = Iyx;

%刚体的质量矩阵

Mc=[mc,0,0,0,0;0,mc,0,0,0;0,0,mc,0,0;0,0,0,Ixx,Ixy;0,0,0,Iyx,Iyy];

%计算Kj,Rtj,Rbj

%m=1;n=1;

%隔振器的顶端与刚体的连接点的坐标为

x0j=[300,300,-300,-300];y0j=[120,-120,120,-120];z0j=[-150,-150,-150,-150];

%第j个隔振器的弹性矩阵

Kxj=ej*bj*hj/lj;Kyj=ej*lj*hj/bj;Kzj=ej*lj*bj/hj;

G=ej/2*(1+miuj);

Gxj=G;Gyj=G;

Kj=[Kxj,0,0,0,0;0,Kyj,0,0,0;0,0,Kzj,0,0;0,0,0,Gxj,0;0,0,0,0,Gyj]*(1+i*etaj);

%薄板的复抗弯曲刚度

D = eb*hb^3/(12*(1-miub^2))*(1+1i*etab);

%定义Six,Siy以求Rbj

function Six=six(ii,x,y,l)

m=1;n=ii;

Six = m*pi/l*cos(m*pi*x/l)*sin(n*pi*y/l);

end

function Siy=siy(ii,x,y,l)

m=1;n=ii;

Siy = m*pi/l*sin(m*pi*x/l)*cos(n*pi*y/l);

end

function Si=si(ii,x,y,lx,ly)

m=1;n=ii;

Si = sin(m*pi*x/lx)*sin(n*pi*y/ly);

end

%计算基座第j阶模态质量

function Mi=mi(ii)

m=1 ;n=ii;

syms xx yy;

Mi = pb*hb*int(int((sin(m*pi*xx/lb)*sin(n*pi*yy/bb))^2,xx,[0,lb]),yy,[0,bb]);

end

%第i阶模态圆频率

function W = solvew(i)

m=1;n=i;

W = ((m*pi/lb)^2+(n*pi/bb)^2)*sqrt(D/pb/hb);

end

%频率

for w = 10:1:2000

%第j个隔振器上部的力分布矩阵

%Rtj=[1,0,0,0,0;0,1,0,0,0;0,0,1,0,0;0,-z0j,y0j,1,0;-z0j,x0j,0,0,1];

%第j个隔振器下端在坐标系XYZ下的力分布矩阵Rbj

%Rbj=

%Zp(非耦合特征值矩阵)

Zp = [mi(1)*(solvew(1)^2+1i*etab*solvew(1)^2-w^2),0,0;0,mi(2)*(solvew(2)^2+1i*etab*solvew(2)^2-w^2),0;0,0,mi(2)*(solvew(2)^2+1i*etab*solvew(2)^2-w^2)];

sumaa=0;sumab=0;sumba=0;sumbb=0;

for nn = 1:1:4

Rtj = [1,0,0,0,0;0,1,0,0,0;0,0,1,0,0;0,-z0j(nn),x0j(nn),1,0;-z0j(nn),x0j(nn),0,0,1];

Rbj = [-(h/2)*six(1,x0j(nn),y0j(nn),lb),-(h/2)*siy(1,x0j(nn),y0j(nn),bb),si(1,x0j(nn),y0j(nn),lb,bb),siy(1,x0j(nn),y0j(nn),bb),-six(1,x0j(nn),y0j(nn),lb);

-(h/2)*six(2,x0j(nn),y0j(nn),lb),-(h/2)*siy(2,x0j(nn),y0j(nn),bb),si(2,x0j(nn),y0j(nn),lb,bb),siy(2,x0j(nn),y0j(nn),bb),-six(2,x0j(nn),y0j(nn),lb);

-(h/2)*six(3,x0j(nn),y0j(nn),lb),-(h/2)*siy(3,x0j(nn),y0j(nn),bb),si(3,x0j(nn),y0j(nn),lb,bb),siy(3,x0j(nn),y0j(nn),bb),-six(3,x0j(nn),y0j(nn),lb);];

sumaa = sumaa+Rtj*Kj*Rtj';

sumab = sumab-Rtj*Kj*Rbj';

sumba = sumba-Rbj*Kj*Rtj';

sumbb = sumbb+Rbj*Kj*Rbj';

end

A11 = -w^2*Mc+sumaa;

A12 = sumab;

A21 = sumba;

A22 = Zp+smbb;

syms DcWp;

dcwp = solve([A11,A12;A21,A22]*[DcWp] == [Q0,0]);

end

%定义Six,Siy以求Rbj

end

错误使用 assignin

尝试将 "xx" 添加到静态工作区。

有关详细信息,请参阅“MATLAB 编程”、“变量赋值限制”。

出错 syms (line 66)

assignin('caller',x,sym(x));

出错 run0/mi (line 45)

syms xx yy;

求问谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值