[解決済み] 代入A(:)=Bにおいて、AとBの要素数は同じでなければならない
質問
私のコードを実行しようとするとき、例えば
for ii= 1:10
output(ii)=rand(3);
end
エラーが表示される
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)
.
設問の例では
rand(3)
が返されます。
3x3
の行列がありますが、これは
output(ii)
は単なる1つの値です(たとえ
output
の方が大きいかもしれません。
output(ii)
は、あくまで一つの値であり
output
によって返される値です。
rand(3)
に収まらない。
output
.
この問題を解決するために、以下のように
output
という変数があるので、すべての結果を収めるスペースがあります。
これには2つの方法があります。ひとつは
マトリクス
というように、返り値に合うような、例えば
output=zeros(3,3,10)
.
そして、コードを次のように変更します。
for ii= 1:10
output(:,:,ii)=rand(3);
end
あるいは
output
として
セル配列
. これは,関数の戻り値が毎回変わるような場合に特に有効です。
rand(ii);
その場合、次のようにするとうまくいきます。
for ii= 1:10
output{ii}=rand(ii);
end
質問の例とは異なり、実際のケースでは、出力が返すサイズがわからないため、2つのオプションのうちどちらを使ってコードを修正すればよいのかがわからない可能性が高いです。
それを知るための一つの方法は、コードがエラーになったときにデバッグヘルプを有効にすることで、次のように入力します。
dbstop if error
をコマンドラインに入力します。これは、MATLABがエラーをスローしたときにデバッグを停止させるトリガーとなります。
size(rand(ii))
と
size(output(ii))
をクリックすると、両者のサイズを確認できます。
多くの場合、使用する関数のドキュメントを読んで、異なるサイズが可能かどうかを確認することも役に立ちます。
とはいえ、2つ目の選択肢であるセル配列は、常にすべてのものが収まるようにします。しかし、MATLABでは一般的に行列の方が高速で使いやすいので、可能であれば行列ベースの解決策を目指すべきです。
関連
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] 配列から最初のN個の要素を取得する方法
-
[解決済み] SetをArrayに変換するには?
-
[解決済み] ある要素が配列に含まれているかどうかを確認する方法
-
[解決済み] C++で配列はどのように使うのですか?
-
[解決済み] java.lang.ArrayIndexOutOfBoundsExceptionが発生する原因とその対策について教えてください。
-
[解決済み】配列要素の出現回数/頻度を数える
-
[解決済み] SwiftでArrayの最初の5つのオブジェクトを返すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSON スキーマで列挙型の配列を定義する正しい方法
-
[解決済み] Goではなぜリストがあまり使われないのですか?
-
[解決済み] VBAでの文字列配列の宣言と初期化
-
[解決済み] ファイルからBashの配列に行を読み込む【重複
-
[解決済み] Perl の配列を繰り返し処理する最適な方法
-
[解決済み】JSONのオブジェクトの配列をYAMLで表現したもの
-
[解決済み】Bashで配列の要素を別行動で表示する?
-
[解決済み】Swiftの配列で要素の合計を求める
-
[解決済み】配列/配列リストよりリンクリストを使用するのはいつ?
-
[解決済み】240以上の要素を持つ配列に対してループ処理を行うと、パフォーマンスに大きな影響があるのはなぜですか?