0

異なる時間 ( t) ごとに異なる分布があり、各分布には10,000要素があります。ループ内のさまざまな分布の CDF をtから1まで変化させて計算する次のコード行がありますnT

[f_CDF(:,t),x_CDF(:,t)]=ecdf(uncon_noise_columndata_all_nModels_diff_t(:,1,t));

Matlab の関数ecdfは、繰り返される要素の確率が加算されるため、分布内の要素の総数よりも少ない可能性のある CDF 値を提供します。その結果、異なる でベクトルの長さが異なるため、出力変数f_CDFとエラーのx_CDF問題が発生します。??? Subscripted assignment dimension mismatch.t

NaNベクトルの長さが行列全体の任意のベクトルの最大長よりも短い場所を埋めることができるように、この問題をどのように並べ替えることができ、ループ内に上記のコード行を実装できますか。ありがとう。

4

1 に答える 1

4

この問題に対処する多くの方法のうちの 2 つを次に示します。

1) セル配列を使用する

結果を行列ではなく cell 配列に格納することを検討してください。行列は、定義上、列が同じ長さである必要があります。

[f_CDF{t},x_CDF{t}]=ecdf(uncon_noise_columndata_all_nModels_diff_t(:,1,t));

2) NaN 行列を事前に割り当てる

CDF の結果を計算するループを実行する前に、NaN で満たされた行列を作成します。各列が 10,000 レコードを超えないことがわかっています。

f_CDF = NaN * ones(10000, nT);
x_CDF = NaN * ones(10000, nT);
for t = 1:nT
    [f_CDFTemp, x_CDFTemp]=ecdf(uncon_noise_columndata_all_nModels_diff_t(:,1,t));
    f_CDF(1:length(f_CDFTemp),t) = f_CDFTemp;
    x_CDF(1:length(x_CDFTemp),t) = x_CDFTemp;
end
于 2012-07-04T22:32:58.597 に答える