如何在Matlab中制作具有不等长度矢量的矩阵?

时间:2012-07-04 22:19:30

标签: matlab vector matrix concatenation

我在不同的时间(t)有不同的分布,每个分布都有10,000个元素。我有以下代码行,它为循环内的不同分布计算CDF,t1变为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可以填充向量的长度小于整个矩阵中任何向量的最大长度的位置,并且我能够在里面实现上面的代码行循环。感谢。

1 个答案:

答案 0 :(得分: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