循环和数据结构错误

时间:2014-02-23 22:57:25

标签: matlab

我在Matlab中写了一个函数:

function z=taamod2(x)

Spot(1).P=[1 2];
Spot(2).P=[5 6];
Spot(3).P=[12 7];
Spot(4).P=[5 2];

W=[3;5;2;1];


A=zeros(1,4);

for i=1:4

   t= W(i,1) * (abs((x(1,1)-(Spot(i).P(i,1)))) + (abs((x(1,2)-(Spot(i).P(i,2))))));

   A(1,i)=t;

end

z=sum(A);

end

当我运行该功能时,我收到此错误:

  

尝试访问Spot.P(2,1);索引越界,因为大小(Spot.P)= [1,2]。   taamod2中的错误(第16行)          t = W(i,1)*(abs((x(1,1) - (Spot(i).P(i,1))))+          (ABS((X(1,2) - (现货(ⅰ).P(I,2))))));

你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

好吧,Spot(i).P是一个行向量,包含2个元素。因此,您可以访问Spot(i).P(1,1)和Spot(i).P(1,2)。就是这样。

对于i = 2,您尝试访问Spot(2).P(2,1),它就不存在。