0

我在不同的时间(t)有不同的分布,每个分布都有10,000元素。我有以下代码行,它计算循环内不同分布的 CDF,t变化范围1nT

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

Matlab 的函数ecdf给出的 CDF 值可能小于分布中元素的总数,因为重复元素的概率会相加。结果,由于不同的向量长度不同,输出变量f_CDFx_CDF遇到错误问题。??? Subscripted assignment dimension mismatch.t

如何对这个问题进行排序,NaN以便填充向量长度小于整个矩阵中任何向量的最大长度的地方,并且我能够在循环内实现上述代码行。谢谢。

4

1 回答 1

4

以下是解决此问题的多种方法中的两种:

1) 使用元胞数组

考虑将结果存储在元胞数组而不是矩阵中,根据定义,矩阵要求列具有相同的长度。

[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 回答