我有大约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”。
提前致谢, 柯恩
答案 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
。