[英]Subscripted assignment dimension mismatch
這是代碼清單,我在行nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
遇到了上述錯誤nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
現在請讓我看看我的代碼是什么對我來說是Matlab的新問題
for r = 1:numb_of_nest % for each particle
for c = 1:4
u=randn(size(nests(r,c)))*sigma;
v=randn(size(nests(r,c)));
step=u./abs(v).^(1/beta);
nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
% Apply simple bounds/limits
ns_tmp=nests(r,c);
I=ns_tmp<Lb(c);
ns_tmp(I)=Lb(I);
% Apply the upper bounds
J=ns_tmp>Ub(c);
ns_tmp(J)=Ub(J);
% Update this new move
nests(r,c)=ns_tmp;
end
end
step=u./abs(v).^(1/beta);
nests(r,c)=nests(r,c)+stepsize.*randn(size(nests(r,c)));
在這里,您為變量step分配了一個值,但是隨后使用了另一個名為stepsize的變量,該變量在此代碼的任何地方都沒有分配值。 這是故意的嗎? 如果沒有,stepssize可能是先前代碼中的一些剩余變量,這會弄亂尺寸並給您帶來此錯誤。
除了上述內容之外,您的代碼中是否還nests
了一個普通的二維矩陣? 如果是這樣,則不必每次都使用size(nests(r,c))
-因為您要給出兩個下標,所以結果總是一直為1
。 還是nests
一個細胞陣列? 在這種情況下,您可能希望使用大括號{
}
而不是普通的括號進行索引,以獲取位於單元格內的矩陣的大小。
當您將某個維度mxn
的值分配給不同維度的下標變量時,會發生此錯誤。
在您的情況下,假設nests
沒有第三維,則將分配給標量( 1x1
)變量。 僅當您嘗試分配的值也是標量時,此方法才有效。 由於您收到錯誤,所以可能不是。 尺寸可以是非標量的唯一位置是stepsize
,因此要解決此錯誤,請確保stepsize
是標量值 。
根據您在較早的注釋中給出的定義( stepsize=0.01*step.*(nests(r,c)-best);
),此問題轉化為確保best
是一個標量值 。 可能是通過下標,由於我不知道什么是best
所以我無法確切告訴您如何。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.