0

私は2つのベクトルを持っています:

x = [0; 1; 2]
y = [2.0000; 0; -14.7781]

x と y をプロットすると、平面上に 3 つの点が表示されxyます。しかし、これらの 3 つのポイントを接続して、連続関数として取得したいと考えています。

y = f(x),
y(0) = 2;
y(1) = 0;
y(2) = -14.7781;
y(0.5) = value between 2 and 0.

たとえばy、ZOH (ゼロ次ホールド) 連続信号として扱うことができます。

MATLAB にはd2c、モデルを離散時間から連続時間に変換する という関数があることがわかりました。しかし、それを私がすでに持っているベクトルとリンクする方法がわかりません。MATLAB でこれを行う方法は?

4

2 に答える 2

3

OK、最新の編集で状況が大幅に改善されました。

しかし、あなたはまだ問題を十分に区別していません。

ZOH は次のように単純です。

    >> x = [0; 1; 2];
    >> y = [2.0000; 0; -14.7781];
    >> f = @(new_x) y(find(x <= new_x, 1, 'last'));
    >> f(0.5)

    ans =
        2

y(0.5) = value between 2 and 0ただし、質問の一部が示すように、これは私があなたが言っていることではないと思います。

おそらく、線形補間された値が必要な場合があります。

>> f = @(new_x) interp1(x,y, new_x);
>> f(0.5)

ans = 
    1

または 3 次スプライン補間:

>> f = @(new_x) interp1(x,y, new_x, 'spline');
>> f(0.5)

ans =    
    2.5973

私が求めているのは、サンプル時間が無限の値に減少するとき、どのモデルがあなたの信号を最もよく表しているでしょうか?

于 2013-04-09T08:29:25.183 に答える
1

n 次多項式は、最大で n-1 個の転換点を持つことができます。したがって、多項式回帰を実行できます。

% Input data
yy = [2.0000; 0; -14.7781];

% Parameters
n = length(yy)-1;
x = (0:1:n).';

% Regression
p = polyfit(x,yy,n);

% Plot
f = polyval(p,x);
figure
plot(x,yy,'o',x,f,'-')
于 2013-04-09T08:15:13.260 に答える