我想实现下面的差分方程来设计一个累加器和一个微分器:
累加器:
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)
。在这种情况下,差分方程可以是任何东西。在这种一般情况下,如何消除采样率的影响?
(请参阅此论坛主题以获取更多详细信息: 相关论坛主题)