[解決済み] MATLABで「連結される配列の次元が一致しない」というエラーをデバッグする。
質問
ある関数
VanderPol()
これはベクトル出力をするはずなのですが、どうもうまくいきません。たった3行のコードですが、バグを見つけることができないようです。
この関数は
function [output] = VanderPol(y, i)
output = [y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)];
end
と呼ばれるようになります。
z = [1 2 3;
4 5 6];
VanderPol(z,1)
というエラーメッセージが表示されます。
VanderPol(z,1)
は欠陥がありますが、理由のヒントはありません。正確なエラーメッセージは以下の通りです。どなたかこのバグを発見できる方はいらっしゃいますか?
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
解決方法は?
これはちょっとエッジケースなんです。MATLABでは、要素をコンマで区切って配列を構築することができます。
,
またはスペース
. したがって、以下の方法はどちらも有効であり、同じ結果を得ることができます。
a = [1, 2, 3]
b = [1 2 3]
行列を作る場合も同様で、行の区切りはセミコロンまたは改行となります。つまり、次のような同等の可能性があります。
A = [1, 2, 3; 4, 5, 6]
B = [1 2 3; 4 5 6]
C = [1, 2, 3
4, 5, 6]
D = [1 2 3
4 5 6]
さて、あなたの例ですが、あなたの配列は次のようなものです。
[y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)]
最初の行には、1つの要素
y(2,i)
. しかし、2行目は2つの要素として解釈されます。
(1-y(1,i)^2)*y(2,i)
と
-y(1,i)
これらの部分の間にスペースがあるためです。つまり、MATLABは以下のように配列の2つの部分をスペースで区切っていると考えています。
b
上記のように それは、次のような入力を解釈します。
[y(2,i); (1-y(1,i)^2)*y(2,i), -y(1,i)]
このコードをMATLABに貼り付けると、「1行目に1要素、2行目に2要素を持つ配列は作れない」というエラーが出ます。
>> [y(2,i); (1-y(1,i)^2)*y(2,i) -y(1,i)]
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
この問題を解決するには、MATLABに、2行目の要素は1つだけで、減算で与えられることを伝えなければなりません。
(1-y(1,i)^2)*y(2,i) -y(1,i)
. その方法をいくつか紹介しましょう。
output = [y(2,i); (1-y(1,i)^2)*y(2,i) - y(1,i)]; % spaces on both sides of -
output = [y(2,i); (1-y(1,i)^2)*y(2,i)-y(1,i)]; % no spaces around -
output = [y(2,i); ((1-y(1,i)^2)*y(2,i) -y(1,i))]; % parentheses around everything
関連
-
[解決済み] MATLAB: symからlogicalへの変換ができない
-
[解決済み] MATLABで1つの点の最近傍を検索する
-
[解決済み] matlabで補強行列を作成し、縮小行エシュロン形式を作成する。
-
[解決済み] プロットを回転させる?
-
[解決済み] matlab、デフォルトの図サイズを設定するが、位置は気にしない?
-
[解決済み] パーフカーブで1つの値を返す - matlab
-
[解決済み] Matlabでファイル名を変更する - movefileがファイルの代わりにフォルダを作成する
-
[解決済み] 1変数に対するfzeroとfsolveの差分
-
[解決済み] MATLABで音を止めるには?
-
[解決済み] 入力引数が多すぎる Matlab ode45
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「Index exceeds the number of array elements (1)」というエラーを修正するにはどうすればよいですか?
-
[解決済み] 部分ピボッティングによるLU分解 Matlab
-
[解決済み] エラー --> 整数には同じクラスの整数か、スカラー倍数しか組み合わせることができません。
-
[解決済み] ベクトルにおける四分位値の0.25から0.75までの数値 MATLAB
-
[解決済み] Matlabでcorr2関数を説明する
-
[解決済み] エラー「Improper assignment with rectangular empty matrix」の解決方法を教えてください。
-
[解決済み] MATLABとラスタープロット
-
[解決済み] MATLABで分数を10進数に変換する【重複】。
-
[解決済み] Wolfram AlphaとMATLABでは伝達関数のプロットが異なる
-
[解決済み] ホールドオンでセミログプロット