您很可能希望在这种情况下使用 interp1。这将在您的点之间执行插值,以便您可以在 x 轴上的任何位置进行采样。
http://www.mathworks.com/help/matlab/ref/interp1.html
我有以下示例,其中包含一些随机样本数据sample1
,sample2
并且sample3
. 这些变量的长度分别为 2600、2500 和 2550。
sample1 = exp(2*linspace(0,1,2600)+rand(1, 2600));
sample2 = exp(linspace(0,1,2500)+rand(1, 2500));
sample3 = exp(3*linspace(0,1,2550)+rand(1, 2550));
我有一个所需的长度(我使用的长度与您的最短样本大小相对应)
desiredlength = 2500;
然后,您可以使用以下代码对数据进行插值(注意默认为线性插值):
adjusted = zeros(3, desiredlength);
adjusted(1, :) = interp1(linspace(0,1,length(sample1)), sample1, linspace(0,1,desiredlength));
adjusted(2, :) = interp1(linspace(0,1,length(sample2)), sample2, linspace(0,1,desiredlength));
adjusted(3, :) = interp1(linspace(0,1,length(sample3)), sample3, linspace(0,1,desiredlength));
plot(adjusted')
linspace(a, b, n)
是一个函数,它为您提供和n
之间的点向量,因为我正在从 转换为a
b
sample1
linspace(0, 1, 2600)
linspace(0, 1, 2500)
我希望这有帮助。