アキュムレータと微分器を設計するために、以下の差分方程式を実装したいと思います。
アキュムレータ:
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)
。この場合、差分方程式は何でもかまいません。この一般的なケースでサンプリング レートの影響を無効にするにはどうすればよいですか?
(詳細については、このフォーラム スレッドを参照してください: 関連するフォーラム スレッド)