liujian 发表于 2008-4-2 10:47

请教用for赋值矩阵出现的问题

for I=0:0.01:2,
    for J=0:pi/100:2*pi,
    result=dblquad(inline('x.*exp(i*(x.^3.*cos(y)-I.*x.*cos(y-J)-x.^2))'),0,1,0,2*pi,[],[],I,J);%求二重积分
    a=I./0.01+1;b=J/(pi/100)+1;
    A(a,b)=((abs(result)).^2)/(pi.^2);
    end
end
运行时出现以下的代码
??? Attempted to access A(15,1); index must be a positive integer or logical.

Error in ==> Untitled1 at 5
    A(a,b)=((abs(result)).^2)/(pi.^2);
请问那位大侠知道哪里出问题了吗?请赐教,感激不禁!

eight 发表于 2008-4-2 11:13

原帖由 liujian 于 2008-4-2 10:47 发表 http://www.chinavib.com/forum/images/common/back.gif
for I=0:0.01:2,
    for J=0:pi/100:2*pi,
    result=dblquad(inline('x.*exp(i*(x.^3.*cos(y)-I.*x.*cos(y-J)-x.^2))'),0,1,0,2*pi,[],[],I,J);%求二重积分
    a=I./0.01+1;b=J/(pi/100)+1;
    A(a,b)=((ab ... 建议先阅读基础书,还有置顶帖中 for 新手系列的帖子

liujian 发表于 2008-4-2 11:23

回复 2楼 的帖子

感谢你的回复,我看过了基础的书籍,可是还是不知道哪里出了毛病
这个程序的第一行for I=0:0.01:2如果改成for I=0:0.01:0.13就没有这样的问题了
请教这是怎么一回事,能给个提示吗?

sigma665 发表于 2008-4-2 15:35

回复 3楼 的帖子

m=0:0.01:2;

n=0:pi/100:2*pi;


for m=0:length(m),
for J=0:length(n),
result=dblquad(inline('x.*exp(i*(x.^3.*cos(y)-I.*x.*cos(y-J)-x.^2))'),0,1,0,2*pi,[],[],I,J);%求二重积分
a=I./0.01+1;b=J/(pi/100)+1;
A(a,b)=((abs(result)).^2)/(pi.^2);
end
end估计是指标出问题,改成这样试试

re-us 发表于 2008-4-2 18:38

用下面的试试
clc
clear

jsq1=0;
for I=0:0.01:0.01+14*0.01
    jsq1=jsq1+1;
    jsq2=0;
    for J=0:pi/100:0
      jsq2=jsq2+1;
    result=dblquad(inline('x.*exp(i*(x.^3.*cos(y)-I.*x.*cos(y-J)-x.^2))'),0,1,0,2*pi,[],[],I,J);%求二重积分
% aa=I./0.01+1
    % b=J/(pi/100)+1
    A(jsq1,jsq2)=((abs(result)).^2)/(pi.^2);
    end
end

liujian 发表于 2008-4-3 08:59

:@) 谢谢两位朋友热心的给出了代码,问题我已经解决了
for I=1:200,
    for J=1:200,
    a=(I-1).*0.01;b=(J-1).*(pi/100);
    result=dblquad(inline('x.*exp(i*(x.^3.*cos(y)-a.*x.*cos(y-b)-x.^2))'),0,1,0,2*pi,[],[],a,b);%求二重积分
    z=(I-1)*200+J;
    A(z)=((abs(result)).^2)/(pi.^2);
    end
end
我这样做就没问题了,再次表示感谢:handshake
页: [1]
查看完整版本: 请教用for赋值矩阵出现的问题