合并具有不等列数的数组

时间:2013-11-04 15:32:10

标签: arrays matlab matrix

我有大约100个1D数组我想合并到矩阵中。 阵列有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”。

提前致谢, 柯恩

1 个答案:

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