声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1868|回复: 5

[综合讨论] MATLAB运行出错怎么解决

[复制链接]
发表于 2009-5-21 09:50 | 显示全部楼层 |阅读模式

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

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

x
我运行原书上的M文件
结果出错:??? Error using ==> le
Not enough input arguments.

Error in ==> le at 18
  [varargout{1:nargout}] = builtin('le', varargin{:});

Error in ==> shicheng at 5
m=[2.762 2.760 2.300]*le+3;
请问怎么解决?

下面是源程序:
%MAIN PROGRAM
%response analysis of structure-elastic time history analysis method
%structure parameter
h=[4000,3300,3300];   %各层层高 mm
m=[2.762 2.760 2.300]*le+3;
k0=[2.485 1.921 1.522]*le+5;
le=diag(ones(cn));
cn=length(m);         %总层数
%earthquake parameter
ct=1.4;              %Wilson法sit值
dt=0.02;
xs=200/max(abs(dzhbo));  %调整地震输入加速度值
ag=dzhbo*0.01*xs;   %地震波,400步,步长为0.02S,单位m/s2
ndzh=400;
agl=ag(1:ndzh);
ag2=ag(2:ndzh+1);
agtao=ct*(ag2-ag1);
%initial value
chsh=zeros(cn,1);
wyi1=chsh;
sdu1=chsn;
jsdu1=chsh;
wyimt=chsh;
sdumt=chsh;
jsdumt=chsh;
unit=ones(cn,1);
m=diag(m);
[ik]=matrixju(k0,cn);
[x,d]=eig(ik,m);
d=sqrt(d);
w=sort(diag(d));
a=2*w(1)*w(2)*(0.05*w(2)-0.07*w(1))/(w(2)^2-w(1)^2);
b=2*(0.07*w(2)-0.05*w(1))/(w(2)^2-w(1)^2);
c0=a*m+b*ik;
for i=1:ndzh
    kxin=ik+(3/(ct*dt))*c0+(6/(ct*ct*dt))*m;
    dpxin=-m*unit*agtao(i)+m*(6/(ct*dt)*sdu1+3*jsdu1)+c0*(3*sdu1+ct*dt/2*jsdu1);
    dxtao=kxin\dpxin;
    dtjsdu=6*dxtao/(ct*(ct^2*dt^2))-6*sdu1/(ct*ct*dt)-(3/ct)*jsdu1;
    jsdu=jsdu1+dtjsdu;
    dtsdu=(dt/2)*(jsdu+jsdu1);
    sdu=sdu1+dtsdu;
    dtwyi=dt*sdu1+(1/3)*dt^2*jsdu1+(dt^2/6)*jsdu;
    wyi=wyi1+dtwyi;
    jsdu=-m\(m*unit*ag2(i)+c0*sdu+ik*wyi);  %调整加速度
    wyi1=wyi;
    sdu1=sdu;
    jsdu1=jsdu;
    wyimt=[wyimt wyi*1000];
    sdumt=[sdumt sdu];
    jsdumt=[jsdumt jsdu];
end
t=0:dt:ndzh*dt;
subplot(2,2,1)
plot(t,wyimt(3,:),'r-')
subplot(2,2,2)
plot(t,jsdumt(3,:),'r-')

%子程序
%This sub-program is for matrix aggregation of system
function[kcju]=matrixju(korc,cn)
kcju=zeros(cn);
for i=1:cn-1
    kcju(i,i)=korc(i)+korc(i+1);
    kcju(i,i+1)=-korc(i+1);
    kcju(i+1,i)=-korc(i+1);
end
kcju(cn,cn)=korc(cn)
回复
分享到:

使用道具 举报

发表于 2009-5-21 10:01 | 显示全部楼层
m=[2.762 2.760 2.300]*le+3;
这个的意思应该是科学计数法, 你改成乘以1000就好了

评分

1

查看全部评分

 楼主| 发表于 2009-5-21 10:15 | 显示全部楼层

回复 沙发 mklh 的帖子

非常感谢,问题解决了
发表于 2011-1-3 19:24 | 显示全部楼层
本帖最后由 神瑛侍者 于 2011-1-3 19:25 编辑

>> %MAIN PROGRAM
%response analysis of structure-elastic time history analysis method
%structure parameter
h=[4000,3300,3300]; %各层层高 mm
m=[2.762 2.760 2.300]*l000;
k0=[2.485 1.921 1.522]*le+5;
le=diag(ones(cn));
cn=length(m); %总层数
%earthquake parameter
ct=1.4; %Wilson法sit值
dt=0.02;
xs=200/max(abs(dzhbo)); %调整地震输入加速度值
ag=dzhbo*0.01*xs; %地震波,400步,步长为0.02S,单位m/s2
ndzh=400;
agl=ag(1:ndzh);
ag2=ag(2:ndzh+1);
agtao=ct*(ag2-ag1);
%initial value
chsh=zeros(cn,1);
wyi1=chsh;
sdu1=chsn;
jsdu1=chsh;
wyimt=chsh;
sdumt=chsh;
jsdumt=chsh;
unit=ones(cn,1);
m=diag(m);
[ik]=matrixju(k0,cn);

??? Undefined function or variable 'l000'.
初学者,望高手指点!多谢!
发表于 2011-1-3 22:56 | 显示全部楼层
l000 or 1000:@)

点评

赞成: 5.0
赞成: 5
有意思……  发表于 2011-1-3 23:02
发表于 2013-9-29 10:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-29 10:40 , Processed in 0.057232 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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