1

アキュムレータと微分器を設計するために、以下の差分方程式を実装したいと思います。

アキュムレータ:
y[n] = y[n-1] + x[n]、ここy[n]で、 は n 番目の出力、x[n]は n 番目の入力です。

微分子:
y[n] = x[n] - x[n-1]、ここy[n]で、 は n 番目の出力、x[n]は n 番目の入力です。

アキュムレータ:

double xn, yn, yn1 = 0;
std::vector<double> InputVector = GetInputVector(), OutputVector;
for(int i=0; i<MAX_NUM_INPUTS; i++)
{
    if (IsFinished()) break;
    yn = yn1 + xn;
    yn1 = yn;
    OutputVector.push_back(yn);
}

差別化要因:

double xn, yn, xn1 = 0;
std::vector<double> InputVector = GetInputVector(), OutputVector;
for(int i=0; i<MAX_NUM_INPUTS; i++)
{
    if (IsFinished()) break;
    yn = xn - xn1;
    xn1 = xn;
    OutputVector.push_back(yn);
}

入力ベクトルのデータは、連続時間信号から生成されます。つまり、この離散時間信号を取得するためにサンプリングされます。また、サンプリング レートは T dです。

入力信号のサンプリング レートを上げると、アキュムレータの出力の振幅が大きくなります。差別化するサンプルがたまたま多いため、これは予期されることです。一方、サンプリング レートの増加に伴い、微分器の出力振幅は減少します。微分器と積分器の両方の振幅は、サンプリング レートがユニタリ (つまり、1.0 サンプル/秒) の場合、(数学が示す値で) 正確です。

私の質問は;
出力ベクトルでのサンプリング レートの影響を無効にするにはどうすればよいですか?

私の一般的な質問は次のとおりです。
任意の因果離散時間伝達関数 から差分方程式を取得するとしますH(z)。この場合、差分方程式は何でもかまいません。この一般的なケースでサンプリング レートの影響を無効にするにはどうすればよいですか?

(詳細については、このフォーラム スレッドを参照してください: 関連するフォーラム スレッド)

4

1 に答える 1

0

微分器の場合:さまざまなサンプリング間隔で同じ結果を得るには、出力yをTdで除算します。

アキュムレータ(積分器)の場合:入力xにTdを掛けます。

于 2011-01-14T08:23:49.150 に答える