声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1091|回复: 2

[综合讨论] 能请matlab高手看看这个程序,并解释一下语句的含义吗?

[复制链接]
发表于 2008-5-14 14:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如题,最近在该论坛上看到一个用matlab编写的梁的振动程序如下:
b=input('please input b.' );%(输入b)
h=input('please input h.' );%(输入h)
Rho=input('please input Rho.' );(????)%%输入密度,如果我理解没错的话
E=input('please input E.' );%(输入E)
ds=input('How many elments do you want to devide?');%(输入离散的单元数)
l=input('Pleaes input the length');%(输入跨径l)
Lres=input('Pleaes input the left restraint,Fix->3,Hinged2->2,Hinged1->1,Free->0 ');%(左约束)
Rres=input('Pleaes input the left restraint,Fix->3,Hinged2->2,Hinged1->1,Free->0 ');%(右约束)
I=b*(h^3)/12;%(计算惯性矩)
EI=E*I;%(计算刚度)

x1=0;x2=sym('L');???? %%定义符号变量 其实可以写成 syms L x, 把L附值给x2
x=sym('x');?????
j=0:3;v=x.^j;?????%% j =0,1,2,3    v=x的j次方
a=[1,x1,x1^2,x1^3;
0,1,2*x1,3*x1^2;
1,x2,x2^2,x2^3;
0,1,2*x2,3*x2^2];
d=v/a;
dt=d';
m=dt*d;
M=Rho*b*h*int(m,x,0,'L');?????%%int(m,x,0,'L') 表达式m对x从0到L积分
M=subs(M,'L',l/ds);?????将M中的L用 l/ds 代替
M=double(M);??????类型转换
Ni=diff(d,x,2);?????求导
Nt=Ni';
k=Nt*Ni;
KL=EI*int(k,x,0,'L');????  同上
KL=subs(KL,'L',l/ds);???? 同上
KL=double(KL);

KGC=cell(1,ds);
for n=1:ds
KGC{n}=zeros((ds+1)*2);???????生成0矩阵
end
for n=1:ds;
for i=1:4
for j=1:4
KGC{n}(i+2*n-2,j+2*n-2)=KL(i,j);??????? 简单的附值
end
end
end
KG=zeros((ds+1)*2);??????同上
for n=1:ds
KG=KGC{n}+KG;?????这个是cell型
end

MGC=cell(1,ds);
for n=1:ds
MGC{n}=zeros((ds+1)*2);????同上
end
for n=1:ds;
for i=1:4
for j=1:4
MGC{n}(i+2*n-2,j+2*n-2)=M(i,j);????????同上
end
end
end
MG=zeros((ds+1)*2);?????????同上
for n=1:ds
MG=MGC{n}+MG;
end

if Lres==3;
MG=MG(3:end,3:end);KG=KG(3:end,3:end);??????????从3到最后
for n=1:ds;
KGC{n}=KGC{n}(3:end,3:end);
end
elseif Lres==2|Lres==1;
MG=MG(2:end,2:end);KG=KG(2:end,2:end);
for n=1:ds;
KGC{n}=KGC{n}(2:end,2:end);
end
else MG=MG;KG=KG;
end

if Rres==3;
MG=MG(1:end-2,1:end-2);KG=KG(1:end-2,1:end-2);
for n=1:ds;
KGC{n}=KGC{n}(1:end-2,1:end-2);
end
elseif Rres==2|Rres==1;
MG=MG([1:end-2,end],[1:end-2,end]);KG=KG([1:end-2,end],[1:end-2,end]);
for n=1:ds;
KGC{n}=KGC{n}([1:end-2,end],[1:end-2,end]);
end
else MG=MG;KG=KG;
end

[EVector,EValue]=eig(KG/MG);
能请matlab高手看看这个程序解释一下各个语句的含义吗?尤其问号之处为不理解的地方!我是刚刚学习matlab,希望高手能帮我解答,不甚感激!!!

[ 本帖最后由 sigma665 于 2008-5-14 16:00 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-5-14 16:01 | 显示全部楼层
很多命令,如果不知道的话
查找帮助就知道了

评分

1

查看全部评分

 楼主| 发表于 2008-5-15 18:03 | 显示全部楼层

谢谢!

谢谢sigma665的细心解答!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-3 08:36 , Processed in 0.057137 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表