簡體   English   中英

下標分配尺寸不匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM