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。

对于累加器(积分器):将输入乘以xTd。

于 2011-01-14T08:23:49.150 回答