matlab中用for 循环+条件语句编程 Illegal use of reserved keyword "else".

function F= Eigenvalue_Equation(delt,M,Tg,amax)
%求地震力F(前三阶振型下)
% M is a mass matrix 质量矩阵
% delt 柔度矩阵
% V is a eigenvector特征向量矩阵
% D is a eigenvalue特征值对角阵
%Tg 特征周期
%amax 水平地震影响系数最大值
ik=inv(delt);
[V,D]=eig(ik,M);
d=diag(sqrt(D));
for i=1:3
[d1(i),j]=min(d);
xgd(:,i)=V(:,j);
d(j)=max(d)+1;
end
w=d1; %所求自振频率
x=xgd; %所求结构主振型
for i=1:3
T(i)=0.7*2*pi/w(i);
end
for j=1:3
Mj=(x(:,j))'*M* x(:,j);
fi(:,j)=x(:,j)/sqrt(Mj); %振型的正交归一化
n=length(x(:,j));
I=ones(n,1);
zhcan(j)=(fi(:,j))'*M*I/(( fi(:,j))'*M* fi(:,j));
end
for i=1:3
if T(i)<=0.1
a(i)=0.45*amax+5.5*amax*T(i);
elseif(T(i)>0.1)&(T(i)<=Tg)
a(i)=amax;
elseif(T(i)>Tg)&(T(i)<=5*Tg)
l(i)=(Tg/T(i));
a(i)=l(i).^0.9*amax;
elseif(T(i)>5*Tg)&(T(i)<=6)
a(i)=[0.2.^0.9-0.02*(T(i)-5*Tg)*amax;
else a(i)==NaN; 【%此处Illegal use of reserved keyword "else".】另end老是回不到最前面而且不变蓝!!!
end
end
for j=1:3
for i=1:n
F(i,j)=a(j)*zhcan(j)*fi(i,j)*G(i);
end
end

速度大于从动盘角速度循环继续
if t<0.2
Mm=Mm(t+h);
a1=a1_1; %a1_1要有参数的,改成a1_1(t,w1)之类的
w1=w1+a1*h;
a2=a2_1; %同上
w2=w2+a2*h;
else Mm=beta*TN;
a1=a1_2; % 同上
w1=w1+a1*h;
a2=a2_2; %同上
w2=w2+a2*h;
end

另外,看看你这些函数是不是都另存到单独的m文件里了
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-26
else后面不能是判断语句,换行是很好的习惯。
第2个回答  2011-03-14
哥哥,matlab和c不一样,换一行试试嘛
这样,
else
a(i)=NaN;
或者

加一个逗号
else, a(i) = NaN;

还有赋值,不要加两个=号本回答被网友采纳

matlab中用for 循环+条件语句编程 Illegal use of reserved keyword...
速度大于从动盘角速度循环继续 if t<0.2 Mm=Mm(t+h);a1=a1_1; %a1_1要有参数的,改成a1_1(t,w1)之类的 w1=w1+a1*h;a2=a2_1; %同上 w2=w2+a2*h;else Mm=beta*TN;a1=a1_2; % 同上 w1=w1+a1*h;a2=a2_2; %同上 w2=w2+a2*h;end 另外,看看你这些函数是不是都另存...

...嵌套函数提示Illegal use of reserved keyword "function",求解啊...
1 定义函数行不用分号结尾 function [x,y]=ILp(f,G,h,Geq,heq,lb,ub,x,id,options);function ftemp=IntLP(vlb,vub);这两句后边的分号都不应该有 2 end后不用分号,你的很多end语句后边都有分号,这是多余的 3 if else end语句逻辑混乱,可能是致命的错误 没个if 都要有一个end对应,组...

...end | Error: Illegal use of reserved keyword "end".”为什么啊...
从你的程序看if,end,应该是配套的,你试试在M文件中把程序完整写出来,在粘贴在command window,我上次也出现这个问题,前面部分是粘贴的,后面在运行时输入end,就报错。写完整再粘贴就可以了。

MATLAB编程时使用语句"if"出错求助
程序改为如下应该就可以了!loc_h=zeros(20,20);BW2=zeros(64,128);hori=1;vert=1;for i=1:64 for j=2:128 if BW2(i,j)~=BW2(i,j-1)loc_h(hori,vert)=BW2(i,j);hori=hori+1;vert=vert+1;end end end loc_h

...程序运行显示Illegal use of reserved keyword "function"._百度知 ...
while w2<w1 %主动盘角速度大于从动盘角速度循环继续 if t<0.2 Mm=Mm(t+h);a1=a1_1; %a1_1要有参数的,改成a1_1(t,w1)之类的 w1=w1+a1*h;a2=a2_1; %同上 w2=w2+a2*h;else Mm=beta*TN;a1=a1_2; % 同上 w1=w1+a1*h;a2=a2_2; %同上 w2=w2+a2*h;end 另外,看...

相似回答