0
clc
clear
N=10;
dE=0;
demonEnergy=0;
systemEnergy=-10;
ring=ones(10,1);
temp=zeros(1,10000);
demonAcc=zeros(1,10000);
start=1;
for i = 1:+1: 10000,
random=randi(10,1);
newSpin=-ring(random);
ring(random)=newSpin;
dE=2*newSpin*(ring*(mod(random+1,10))+ring*(mod(random+9,10)));
if dE<0
demonEnergy=demonEnergy+abs(dE);
systemEnergy=systemEnergy-abs(dE);
elseif demonEnergy>=dE
systemEnergy=systemEnergy+abs(dE);
demonEnergy=demonEnergy-abs(dE);
end
demonAcc(i)=dE;
temp(i)=-1/(atanh(demonAcc(i))); %J=1
dE=0;
end
In an assignment A(:) = B, the number of elements in A and B must be the same.
Error in PlotTest1 (line 29) demonAcc(i)=dE;
現在,我不明白爲什麼這是不允許的。我將我的Array的元素設置爲等於相同大小的數字。想到的一點是,也許我不能將它設置爲負數,但我在循環外嘗試了一次測試,並且它完美地工作。有什麼建議麼?
我懷疑你的錯誤在'dE = 2 * newSpin ...'行中。你在兩個地方乘以'ring *(...)',我認爲你想索引到'ring'。如你的代碼所示,'dE'的大小爲(10,1)'。 – beaker
謝謝..多數民衆贊成在這樣一個愚蠢的錯誤。但是,現在我得到這個「下標索引必須是真正的正整數或邏輯 錯誤在PlotTest1(第19行) dE = 2 * newSpin *(ring(mod(random + 1,10))+ ring(mod (隨機+ 9,10)));」 – Lenol
mod函數可以返回0,0不能是數組索引。 – oro777