/ / Matlab 2013a index error [duplicate] - matlab

Matlab 2013a index error [duplicate] - matlab

Ho ottenuto esattamente questo errore:

Attempted to access E(3,1); index must be a positive integer or logical.

Ma l'indice è E(3,1)quei numeri sono entrambi positivi Cosa sta succedendo?

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

risposte:

0 per risposta № 1

3 indice in E(3,1) potrebbe non essere esattamente un numero intero. Nel tuo caso, indice row index 3 è generato moltiplicando t*5 cioè 0.6*5 (se t = 0,6). Non garantisce che sia un numero intero.

In un controllo di alta precisione sul valore dell'indice generato 3, scoprirai che è fuori dall'esatto intero 3 per 1 bit o così alla sua estremità meno significativa.

Pertanto, durante l'indicizzazione E(3,1), 3 non è percepito come un numero intero.

Nei casi in cui si genera l'indice moltiplicando con un decimale, assicurarsi di convertirlo in int prima di utilizzarlo per l'indicizzazione come round(t*0.5) o int8(t*0.5).

O tutti insieme evitare l'indice generato moltiplicando i decimali.