请教怎么错误怎么改啊?
提示出错是??? Attempt to reference field of non-structure array.Error in ==> krzn at 29
array(i.j)=(array(i-1,j)+2*array(i,j+1)+array(i+1,j))/4;
程序如下
format short
error=0.0001;
number=1;
t=5;
clc
for i=1:1:16
for j=1:1:12
if i==1
array(i,j)=30;
elseif i==6&j<8
array(i,j)=0;
elseif j==12
array(i,j)=30;
elseif i>6&j==7
array(i,j)=0;
else
array(i,j)=20;
end
end
end
while t>error
t=error;
for i=1:1:16
for j=1:1:12
c=array(i,j);
if (i>1&i<6&j<12)|(i>6&j>7&j<12)
if j==1
array(i.j)=(array(i-1,j)+2*array(i,j+1)+array(i+1,j))/4;
elseif i==16
array(i,j)=(array(i,j-1)+2*array(i-1,j)+array(i,j+1))/4;
else
array(i,j)=(array(i-1,j)+array(i,j+1)+array(i+1,j)+array(i,j-1))/4;
end
end
if t<abs(array(i,j)-c)
t=abs(array(i,j)-c);
end
end
end
number=number+1;
end
number
array array(i.j)中符号错误,不是“.”而是”,“。matlab中数组的下标不能为零,而且建议不要用i这个符号,它在matlab中表示sqrt(-1). 检查你的代码吧!!
array(i.j)=(array(i-1,j)+2*array(i,j+1)+array(i+1,j))/4;
其中array(i.j)
应该为array(i,j),
不应该啊! 而且你的第二循环是有问题的,呵呵。第一个循环可以用如下语句代替
array = 20*ones(16,12);
array(1,:) = 30;
array(6,1:7) = 0;
array(:,12) = 30;
array(7:end,7)= 30; 谢谢啊
是输入法的问题吧
刚才好像用着紫光
页:
[1]