0

我有一个 1x1 点矩阵,它指定驱动器相对于时间的速度。该速度在整个操作过程中发生变化;这意味着两点之间的差异正在发生变化。

给你举个例子:M = [1; 2; 3; 5; 7; 9; 11; 15; 19]。(只是这是一个 892x1 矩阵)

我想让这个矩阵加倍(所以改变每个时间步的相对速度),同时保持速度变化的方式。例如:M' = [1; 1.5; 2; 2.5; 3; 4; 5; 6; 7; 8; 9; 10; 11; 13; 15; 17; 19].

在 MatLab 中是否有一种简单的方法可以做到这一点?

到目前为止,我已经尝试过upsampling(用零填充时间步);interp(它用低通插值填充它。

谢谢!

4

1 回答 1

4

尝试

M = [1; 2; 3; 5; 7; 9; 11; 15; 19];

% create new time, with twice as many sampling times
t_new = linspace(1, numel(M), 2*numel(M)-1);

% interpolate
Mt = interp1(M, t_new), 

请注意,interp1 它还接受其他参数,例如splinepchip允许您指定要使用的插值内核。阅读help interp1以获取更多信息。

或者,您可以使用类似的东西

pp = spline(t, M);    % creates a cubic-splines interpolator
Mt = ppval(pp, t_new) % to evaluate M at all new times t_new
于 2012-12-04T10:08:40.850 回答