[解決済み】「Index exceeds the number of array elements (1)」というエラーを修正するにはどうすればよいですか?
2022-02-08 10:18:20
質問内容
私はMatlabの初心者で、ある微分方程式の解を近似するために修正オイラー法を適用するMatlab関数を作ろうと思っています。コマンドウィンドウでその関数を呼び出すと、以下のエラーが表示されます。
Index exceeds the number of array elements (1). Error in modified_euler2 (line 10) y(i+1)=y(i)+0.5*(k1(i)+k2(i));
このように、以下のような入力で関数を呼び出しています。
modified_euler2(60,1000,9.8,0.1125,1.125,25)
この関数の完全なコードは以下のとおりです。
function output = modified_euler2(T,n,g,C,K,L)
f = @(v,y) (g - C*abs(v)*v -max(0, K*(y - L)));
h = T / n;
t = 0:h:T;
y = zeros(1,n+1);
v = zeros(1,n+1);
k1 = zeros(1,n+1);
k2 = zeros(1,n+1);
for i = 1:n+1
y(i+1)=y(i)+0.5*(k1(i)+k2(i));
k1 = h*f(v(i),y(i));
k2=h*f(v(i)+h,y(i)+k1(i));
end
output = t,y,v,h
figure
plot(y)
end
このエラーを修正する方法について、何かアドバイスがあれば、ぜひお願いします。
解決方法は?
index exceeds the number of array elements"は、配列のインデックスをある数で指定していることを意味します。
n
の要素を要求していますが
m
-番目の要素で、ここで
m>n
. つまり、ベクトルがあったとして
x = [2 4 6]
では
x(1)=2
が、しかし
x(6)
は、例えば
x
は3つの要素しか持っていません。
あなたの場合,Matlabはエラーが発生した場所を正確に教えてくれています.
y(i+1)=y(i)+0.5*(k1(i)+k2(i))
ここでは、いくつかのインデックス操作を行っていますね(
y(i+1)
,
y(i)
,
k1(i)
および
k2(i)
) があり、そのうちの1つ (またはそれ以上) がエラーの原因になっています。問題は,インデックスを作ろうとしている変数が1つの要素しか持っていない(Matlabはそれを教えてくれます)にもかかわらず,その変数に対して
i
-th (または
i+1
-要素でなければできません。
i=1
.
ですから、どのインデックス作成操作が存在しない要素にアクセスしようとしているのかを特定する必要があります。
関連
-
[解決済み] Matlab. 位置2のインデックスが配列の境界を越えています(1を超えてはいけません)。
-
[解決済み] セルコンテンツから非セル配列オブジェクトへの代入
-
[解決済み] Matlabでシンプソンの1-3 (h / 3)メソッド
-
[解決済み] Matlabで列ベクトルを反復処理する方法は?[重複].
-
[解決済み] エラー: 等号の左側にある式は代入の対象として有効ではありません Matlab
-
[解決済み] パーフカーブで1つの値を返す - matlab
-
[解決済み] グラフと関係のないカスタム凡例を追加する
-
[解決済み] Matlabで'symfun'によって記号関数の微分を実装するには?
-
[解決済み] ホールドオンでセミログプロット
-
[解決済み] Matlabでベクトルを表示(印刷)するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MATLABで軸の制限をグローバルに設定し、プロットされたデータの最小値と最大値にする方法は?
-
[解決済み] matlabで関数ハンドルを使った操作
-
[解決済み] MATLABでベクトルからNaNを除去する
-
[解決済み] MATLAB : 周波数分布
-
[解決済み] 部分ピボッティングによるLU分解 Matlab
-
[解決済み] matlab、デフォルトの図サイズを設定するが、位置は気にしない?
-
[解決済み] エラー「Improper assignment with rectangular empty matrix」の解決方法を教えてください。
-
[解決済み] Matlabで固有ベクトルを正しくプロットする
-
[解決済み] Matlab - 収束率を計算する
-
[解決済み] RGBカラーによるMATLABプロット