私はこのエラーを正確に受けました:
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は03
のインデックス E(3,1)
正確には整数ではないかもしれない。あなたの場合、インデックス row index 3
乗算によって生成される t*5
すなわち、 0.6*5
(t = 0.6の場合)。整数であることを保証するものではありません。
生成された指標値の高精度チェック 3
あなたはそれが最下位の端で正確な整数3から1ビットほど離れていることがわかります。
したがって、インデックス作成中 E(3,1)
, 3
整数として認識されない。
小数点を掛けてインデックスを生成する場合は、インデックス化に使用する前にint型に変換してください。 round(t*0.5)
または int8(t*0.5)
.
または、すべて一緒に一緒に小数点を掛けることによって生成されるインデックスを避けてください。