如何将采样率的影响添加到差分方程中?

时间:2011-01-14 08:18:48

标签: c++ integration transfer sampling differential-equations

我想实现下面的差分方程来设计累加器和微分器:

累加器:
y[n] = y[n-1] + x[n],其中y[n]是第n个输出,x[n]是输入。

微分:
y[n] = x[n] - x[n-1],其中y[n]是第n个输出,x[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);
}

Differantiator:

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)中获得差分方程。在这种情况下,差分方程可以是任何东西。在这种一般情况下,如何消除采样率的影响?

(请参阅此论坛帖子了解更多详情: Relevant forum thread

1 个答案:

答案 0 :(得分:0)

对于微分器:要获得不同采样间隔的相同结果,请将输出y除以Td。

对于累加器(积分器):用Td乘以输入x