这是一个滤波的差分方程:
y(n)=x(n)-x(n-2)+Ay(n-1)-By(n-2)
x(1) ,x(2)...x(400)已知,但怎么代入原方程呢?y(1)=x(1)-x(-1)+Ay(0)-By(-1)
y(2)=x(2)-x(0)+Ay(1)-By(0)
...
...
y(n)=x(n)-x(n-2)+Ay(n-1)-By(n-2)我的数字怎么代进去呢?用循环吗?
y(n)=x(n)-x(n-2)+Ay(n-1)-By(n-2)
x(1) ,x(2)...x(400)已知,但怎么代入原方程呢?y(1)=x(1)-x(-1)+Ay(0)-By(-1)
y(2)=x(2)-x(0)+Ay(1)-By(0)
...
...
y(n)=x(n)-x(n-2)+Ay(n-1)-By(n-2)我的数字怎么代进去呢?用循环吗?
方程用一个迭代可能是最简单的。
你的a,b是常数吧。
1、酸Y(1)的时候,X(1)可知道,但是X(-1)的数值是多少?
2、算Y(1)的时候,需要知道Y(0)和Y(-1)的数值,它们我想应该是确定的数字吧,是多少?
3、算Y(2)的时候,用了X(0),它的数值是多少?综合:
X(-1)、X(0)、Y(-1)、Y(0)都应该是已经知道的常量,是多少。我准备用低归函数实现,现在就这几个常量被卡了,需要证实。
2, -49000,
3, -48000,
4, -47000,
5, -460,
6, -450,
7, -440,
8, -430,
9, -420,
10, -410,
...
...
435, 3840, x(n)是这组数据。从文本中以数组形式读入数据后,我怎么样实现这个循环呢?
const
A = 3;
B = 5;
ArraySize = 400; function funcY(N: integer; arrayA: array of integer): integer;
begin
case N of
1: Result := arrayA[N];
2: Result := arrayA[N] + A*funcY(N-1, arrayA);
else
Result := arrayA[N] - arrayA[N-2] + A*funcY(N-1, arrayA) - B*funcY(N-2, arrayA);
end;
end;var
arrayX: array[1..ArraySize] of integer;
i, y: integer;
begin
for i := 1 to ArraySize do
arrayX[i] := i+10;
y := funcY(5, arrayX);
ShowMessage(IntToStr(y));
end;我的这些代码其实也只是一种思路 具体还要你自己实现