Matlab 2013a索引错误

时间:2016-12-28 13:22:23

标签: matlab

我收到了这个错误:

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

1 个答案:

答案 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。

或者一起避免通过乘以小数生成的索引。