[解決済み] Matlab Error: ポジション1のインデックスが配列の境界を越えています
2022-02-14 10:47:58
質問
MATLABでガンマ分布を作成しようとしているのですが、エラーが出続けます。
ポジション 1 のインデックスが配列の境界を越えています(100 を超えてはなりません)。
私がこれを正しく読んでいると仮定すると、それは単純に= 2500(私がこのプロジェクトで使用している擬似ランダム変数の数)である変数Mに言及しています。
私のロジックの何が間違っているのか、そしておそらく解決策を誰かが説明してくれることを望んでいました。
alpha = 0.5;
w = gamma_rdn(M,alpha);
x1 = (0.0001:0.001:1); % For plot
figure(5)
subplot(2,1,1);hist(w);title('Histogram of Gamma RDN');
subplot(2,1,2);plot(x1,pdf('gam',x1,alpha,1));title('Theoretical Gamma Density with \alpha = 0.5');
axis([0 1 0 100]);
% The gamma_rdn function is implemented as follows:
function[w] = gamma_rdn(M,alpha)
% Generate random numbers from the gamma distribution with parameter
% alpha <= 1, beta = 1
pe = exp(1);
w = zeros(M,1);
u = rand(100,1);
b = (alpha + pe)/pe;
i = 0;
j = 0;
while j < M
i = i+1;
y = b*u(i,1);
if y <= 1
z = y^(1/alpha);
i = i+1;
if u(i,1) <= exp(-z)
j = j+1;
w(j,1) = z;
else
i = i+1;
end
else
z = -log((b-y)/alpha);
i = i+1;
if u(i,1) <= z^(alpha - 1)
j = j+1;
w(j,1) = z;
else
i = i+1;
end
end
end
if i > 95
u = rand(100,1);
i = 0;
end
end
解決方法は?
u = rand(100,1) を選択した特別な理由はありますか?
にあるため、問題が来ている。 一方 ループでは、変数 i が100を超える(例えば i =101), y = b*u(i,1) は無効となる。つまり、あなたがアクセスしようとしているのは u(101,1) のサイズが小さくなっているのに対し u は(100,1)である。
特に理由がない場合は、十分な大きさのものを試してみてください。 u = rand(10000,1) .
関連
-
[解決済み] double 型の入力引数に対して未定義の関数 'int' が存在する [重複] 。
-
[解決済み] Matlabのfprintfを使用してテーブルを作成する
-
[解決済み] Matlabの角括弧と中括弧の違い?
-
[解決済み] MATLABで1つの点の最近傍を検索する
-
[解決済み] MATLABで「連結される配列の次元が一致しない」というエラーをデバッグする。
-
[解決済み] matlabの*と.*の違いは何ですか?
-
[解決済み] Matlabでm-fileを実行するとき、コマンドビューでどのように改行を出力するのですか?
-
[解決済み] 行列の行にノルム関数を適用する - Matlab [duplicate]
-
[解決済み] Matlabでforward inputnames?
-
[解決済み] 関数から返された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でcorr2関数を説明する
-
[解決済み] パーフカーブで1つの値を返す - matlab
-
[解決済み] MATLABで分数を10進数に変換する【重複】。
-
[解決済み] 減衰比一定の直線と根元の軌跡との交点を求めるためのrlocfindの代替プログラム(Matlab
-
[解決済み] mnrfitを用いたmatlabでのロジスティック回帰
-
[解決済み] 行列の行にノルム関数を適用する - Matlab [duplicate]
-
[解決済み] matlabでchi2gof関数を理解する
-
[解決済み] ホールドオンでセミログプロット