我有一个过滤器。它有两个极点和两个零点。
我找到了状态空间方程和矩阵 A、B、C 和 D
现在。我有 9 个样本需要用我的过滤器处理。如何使用 A、B、C、D 矩阵来处理样本?
我有一个过滤器。它有两个极点和两个零点。
我找到了状态空间方程和矩阵 A、B、C 和 D
现在。我有 9 个样本需要用我的过滤器处理。如何使用 A、B、C、D 矩阵来处理样本?
我们对您的系统一无所知,但一般规则是:
在哪里是输入信号值,是给定时间点的状态向量值,并且显然是输出。
您需要做的是:
说 Matlab'ish (未经测试,因为我正在旅行,但鉴于所有信息,它非常容易弄清楚发生了什么):
b = [0 2 3];
a = [1 0.4 1];
[A,B,C,D] = tf2ss(b,a);
x_0 = zeros(size(A,1), 1); % Initial state
N = 9;
u = randn(1, N); % Some input signal
y = zeros(N, 1); % Output signal
x = u_0;
for n=1:N-1
y(n) = C*x + D*u(n); % System output
x = A*x + B*u(n); % Transition
end
我不明白你的要求是什么。但是你可以找到过滤器的传输功能(因此通过放置's = jw'来响应频率)。这是方法,
dx/dt=Ax+Bu;(x为状态变量,y为输出,u为输入) Y =Cx+Du
在两侧应用拉普拉斯变换
sX(s)=AX(s)+BU(s);Y(s) =CX(s)+DU(s);
sX(s)-AX(s)=BU(s);X(s){SI-A}=BU(s);(I是单位矩阵)
X(s)=([SI-A]^-1)BU(s);
X(s) = V(s)BU(s) V(s)=[SI-A]^-1
Y(s)=CV(s)BU(s)+DU(s);
Y(s)/X(s) =CV(s)B+D;
这是 's' 域中的转移函数。