您很可能希望考虑在这种情况下使用 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) 是一个函数,它为您提供在a 和b 之间的n 点向量,对于sample1,我正在从linspace(0, 1, 2600) 转换为linspace(0, 1, 2500)
我希望这会有所帮助。