我在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))))));
你能告诉我我做错了吗?
答案 0 :(得分:2)
好吧,Spot(i).P是一个行向量,包含2个元素。因此,您可以访问Spot(i).P(1,1)和Spot(i).P(1,2)。就是这样。
对于i = 2,您尝试访问Spot(2).P(2,1),它就不存在。