我想实现下面的差分方程来设计累加器和微分器:
累加器:
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)
答案 0 :(得分:0)
对于微分器:要获得不同采样间隔的相同结果,请将输出y
除以Td。
对于累加器(积分器):用Td乘以输入x
。