我收到了这个错误:
Attempted to access E(3,1); index must be a positive integer or logical.
但索引是E(3,1)
,这些数字都是正数。发生了什么事?
for t=T:0.2:4
for i=1:N
% D = D +1
x = randi(Nsamples,1,1);
if(x==1)
Etemp = E(t*5,i) - S(x)*S(x+1) + (-S(x))*S(x+1);
elseif(x==Nsamples)
Etemp = E(t*5,i) - S(x)*S(x-1) + (-S(x))*S(x-1);
else
%********************* This is the error line
Etemp = E(t*5,i) - (S(x-1)*S(x)+S(x)*S(x+1))+ (S(x-1)*(-S(x))+(-S(x))*S(x+1));
end
end
end
答案 0 :(得分:0)
3
中的 E(3,1)
索引可能不完全是整数。在您的情况下,索引row index 3
是通过乘以t*5
生成的,即0.6*5
(如果t = 0.6)。它不保证它是一个整数。
在对生成的索引值3
进行高精度检查时,您会发现它在最不重要的一端以3位左右的精确整数关闭。
因此,在索引E(3,1)
时,3
不会被视为整数。
如果您通过乘以小数生成索引,请确保在将其用于索引(例如round(t*0.5)
或int8(t*0.5)
)之前将其转换为int。
或者一起避免通过乘以小数生成的索引。