でなければならAとBの要素数、(:) = B、私のコードを実行しようとすると、同じ
In an assignment A(:) = B, the number of elements in A and B must be the same
または
In an assignment A(I) = B, the number of elements in B and I must be the same.
このエラーは何を意味するのでしょうか?それを取り除く方法は何ですか?
でなければならAとBの要素数、(:) = B、私のコードを実行しようとすると、同じ
In an assignment A(:) = B, the number of elements in A and B must be the same
または
In an assignment A(I) = B, the number of elements in B and I must be the same.
このエラーは何を意味するのでしょうか?それを取り除く方法は何ですか?
このエラーは、可変サイズのチャンクにサイズよりも大きい(または小さい)値を入力しようとしているために発生します。言い換えれば、A(:)=B
の文はsize(A(:))
となり、size(B)
とは異なります。 3x3
行列を返しrand(3)
質問の例で
が、しかし、output(ii)
は、単に単一の値(output
を大きくすることができる場合でも、output(ii)
はoutput
のちょうど単一の値である)であり、従ってrand(3)
によって返される値はありません内部には入りませんoutput
。
この問題を解決するには、output
変数のサイズを変更する必要があります。その結果、すべての結果に合わせるスペースがあります。
これには2通りの方法があります。それらの1つは、返品に合う行列を作成することです。 output=zeros(3,3,10)
。
はその後、我々はあなたがセル配列としてoutput
を埋めることができ、また
for ii= 1:10
output(:,:,ii)=rand(3);
end
にコードを変更することができます。これは、関数の戻り値が毎回サイズが変わるときに特に便利です。その場合
rand(ii);
、次のように働くだろう
for ii= 1:10
output{ii}=rand(ii);
end
問題の例とは異なり、実際のケースでは、あなたがどのような出力リターンの大きさを知っていない可能性が高いですしたがって、コードを修正するために使用する2つのオプションのどちらがわからないのでしょうか。
これは、コマンドラインにdbstop if error
と入力することで、コードエラーが発生したときにデバッグヘルプを有効にする方法です。これにより、MATLABでエラーが発生したときにデバッグが停止し、size(rand(ii))
とsize(output(ii))
と入力すると、両方のサイズが表示されます。
多くの場合、使用されている関数のドキュメントを読むことで、さまざまなサイズが可能かどうかを確認することができます。
つまり、2番目のオプションであるセル配列は、すべてが確実に収まるようにします。しかし、MATLABでは一般的に行列の方が高速で使いやすくなりますので、可能であれば行列ベースの解を目指してください。
これはこの一般的な問題の簡単な説明であり、情報を編集/追加することは自由です。コミュニティウィキに変換することができます –
そのままお待ちください。これは将来的にリンクする必要のある標準的な複製物です。 – rayryeng