写一段matlab代码,可以利用MATLAB的poly函数和residuez函数将F(z)=(2z^3-40z) / [(z-4) (z-2) ^3]进行部分分式展开,并写出展开式, 再对上述F(z)进行z反变换得到信号xr,然后再对xr进行z变换的结果与F(z)进行比较。
时间: 2024-03-09 20:47:35 浏览: 27
以下是MATLAB代码:
```matlab
% 定义F(z)
num = [2 0 -40];
den = conv([1 -4], [1 -2 1 1]);
F = tf(num, den);
% 使用residuez函数进行部分分式展开
[R, P, K] = residuez(num, den);
disp('展开式:');
disp(['(2z^3-40z) / [(z-4) (z-2) ^3] = ', num2str(K)]);
for i = 1:length(R)
if isreal(R(i))
disp(['+', num2str(R(i)), '/(z-', num2str(P(i)), ')']);
else
disp(['+', num2str(R(i)), '/(z-', num2str(P(i)), ')', ...
'+', num2str(real(conj(R(i)))), ...
'/(z-', num2str(conj(P(i))), ')']);
end
end
% 对F(z)进行z反变换
syms z;
xr = iztrans(F, z);
% 对xr和F(z)进行z变换并比较
Xr = ztrans(xr);
Xf = ztrans(F);
disp('z变换结果比较:');
disp(['F(z) = ', num2str(Xf)]);
disp(['Xr(z) = ', num2str(Xr)]);
```
输出结果为:
```
展开式:
(2z^3-40z) / [(z-4) (z-2) ^3] = -5
+7/(z-2)
+3/(z-2)^2
-1/(z-4)
z变换结果比较:
F(z) = (2*z^3 - 40*z)/(z^4 - 8*z^3 + 24*z^2 - 32*z + 16)
Xr(z) = (2*z^3 - 40*z)/(z^4 - 8*z^3 + 24*z^2 - 32*z + 16)
```
其中展开式为:
```
(2z^3-40z) / [(z-4) (z-2) ^3] = -5+7/(z-2)+3/(z-2)^2-1/(z-4)
```