0

時間に対するドライブの速度を指定するポイントの 1x1 マトリックスがあります。この速度は操作中に変化します。これは、2 点間の差が変化していることを意味します。

例を挙げると: M = [1; 2; 3; 5; 7; 9; 11; 15; 19]. (これが 892x1 マトリックスであることのみ)

速度が変化する方法を維持しながら、この行列を 2 倍の長さにしたい (したがって、タイムステップごとの相対速度を変更する)。例えば: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 のような追加の引数も受け入れることに注意してください。これにより、使用する補間カーネルを指定できます。詳細については、こちらをお読みください。splinepchiphelp 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 に答える