krzn 发表于 2006-11-24 09:32

请教怎么错误怎么改啊?

提示出错是??? 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

w89986581 发表于 2006-11-24 10:01

array(i.j)中符号错误,不是“.”而是”,“。matlab中数组的下标不能为零,而且建议不要用i这个符号,它在matlab中表示sqrt(-1).

yukeyyxh 发表于 2006-11-24 10:02

检查你的代码吧!!
array(i.j)=(array(i-1,j)+2*array(i,j+1)+array(i+1,j))/4;
其中array(i.j)
应该为array(i,j),
不应该啊!

w89986581 发表于 2006-11-24 10:09

而且你的第二循环是有问题的,呵呵。第一个循环可以用如下语句代替
array         = 20*ones(16,12);
array(1,:)      = 30;
array(6,1:7)    = 0;
array(:,12)   = 30;
array(7:end,7)= 30;

krzn 发表于 2006-11-24 10:12

谢谢啊
是输入法的问题吧
刚才好像用着紫光
页: [1]
查看完整版本: 请教怎么错误怎么改啊?