0

我有大约 100 个一维数组我想合并到一个矩阵中。阵列有 140 到 180 列。

是否可以将这些 1 x (140-180) 数组合并为维度为 100 (数组数量) x 180 的矩阵?

所有数组都包含数字。我想通过插值将 1x140 数组扩展为 1x180 数组。

以简化的形式,它应该是这样的:

A = [1 5 7 8 3]
B = [1 3 5]

result= 

[1 5 7 8 3

1 2 3 4 5]

数组 B (1x3) 扩展为 1x5 矩阵。并且中间的值是插值的。

基本上,在所有数组都扩展了相同数量的列之后,我想到了使用“vertcat”。

在此先感谢,科恩

4

1 回答 1

3

这个怎么样?

array = {[1 5 7 8 3],[1 3 5]}; % example data
N = 5; % desired length (180 in your case)

aux = cellfun(@(v) interp1(linspace(0,1,length(v)),v,linspace(0,1,N)), array, 'uni', false);
result = cat(1,aux{:});

它使用线性插值。对于您的示例,这给出了

>> result

result =

     1     5     7     8     3
     1     2     3     4     5

请注意,线性插值通常会修改除第一个和最后一个向量的所有值。例如,N=5向量[1 3 4 5]会被插值到[1 2.5 3.5 4.25 5]. 您可以通过向 传递额外的参数来使用其他形式的插值interp1,请参阅help interp1

于 2013-11-04T15:47:43.727 回答