我在不同的时间(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
可以填充向量的长度小于整个矩阵中任何向量的最大长度的位置,并且我能够在里面实现上面的代码行循环。感谢。
答案 0 :(得分:4)
以下是解决此问题的两种方法:
考虑将结果存储在单元格数组中而不是矩阵中,根据定义,矩阵要求列具有相同的长度。
[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