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