matlab画复数1/(z-1)(z-2)
时间: 2023-12-28 10:04:54 浏览: 115
你可以按照以下步骤使用 MATLAB 画出复数函数1/(z-1)(z-2)的图像:
1. 定义符号变量z:
```
syms z
```
2. 定义函数f(z):
```
f = 1/((z-1)*(z-2));
```
3. 将z赋值为一个复数网格(例如,使用meshgrid函数):
```
[x, y] = meshgrid(-5:0.1:5);
z = x + 1i*y;
```
4. 计算f(z)的实部和虚部:
```
real_f = real(f);
imag_f = imag(f);
```
5. 使用surf函数绘制实部和虚部的图像:
```
figure
subplot(1,2,1)
surf(x, y, real_f)
title('Real part')
subplot(1,2,2)
surf(x, y, imag_f)
title('Imaginary part')
```
这将会绘制出函数1/(z-1)(z-2)的实部和虚部的图像。
相关问题
用 MATLAB 命令画出H1(z)=z/z-0.8对应的时域单位取样响应h(n)的波形
在MATLAB中,为了绘制H1(z)函数即系统的单位脉冲响应h(n),其表达式是 h(n) = z^n / (z - 0.8),你需要先通过Z变换将其转换为离散时间序列,然后利用`impulse`函数生成并显示波形。以下是步骤:
1. 首先,计算h(n)的递推公式。对于这个系统,由于它是一个简单的移位除法形式,你可以直接得出n=0时h(0)=1,对于n>0的情况,h(n) = h(n-1) * z / (z - 0.8)。
2. 然后,创建一个向量`n`表示时间索引,通常从0开始到足够大的数,比如1000或者系统稳定的采样次数。
3. 使用递归公式计算h(n)。如果要用循环来做,可以设置一个初始条件h(0)=1,并在每次迭代中更新h(n)。
```matlab
% 初始化变量
n = 0:0.1:100; % 创建一个时间向量
z = exp(1i*2*pi*n); % 创建复数频率向量 for Z变换
% 设置初始条件
h = zeros(size(n)); % 或者 h(0) = 1;
h(1) = 1; % 单位阶跃响应的起点
% 递推计算h(n)
for i = 2:length(n)
h(i) = h(i-1) * z(i) / (z(i) - 0.8);
end
% 画出波形
stem(n, abs(h), 'Marker', '.', 'LineWidth', 1.5);
xlabel('样本点 n');
ylabel('|h(n)|');
title('H1(z)系统的单位脉冲响应h(n)');
```
注意,这里假设系统的稳定性和频域函数在复平面上的收敛性,如果你需要精确地模拟零极点图(pole-zero plot),那么可能还需要检查系统的稳定性。执行上述代码后,你应该能看到h(n)的波形。
用 MATLAB 命令画出函数H1(z)=z/z-0.8的零极点分布图、以及对应的时域单位取样响应h(n) 的波形,并分析系统函数的极点对时域波形的影响。
在MATLAB中,你可以使用`zplane`命令绘制复数平面上的零点和极点分布图,而`impz`函数用于计算系统函数的零点和极点。对于H1(z) = z / (z - 0.8),首先需要定义这个函数:
```matlab
num = [1];
den = [1, -0.8];
H1 = tf(num, den);
```
然后可以使用`zplane(H1)`绘制零极点图:
```matlab
zplane(H1)
```
这将显示一个复平面图,其中实轴表示z值,虚轴表示共轭复数,零点标记为圆圈,极点标记为叉。
对于时域单位取样响应h(n),可以使用`impulse响应`或`bode`函数结合`plot`来观察:
```matlab
[h, t] = impulse(H1); % 或者 h = filter(b, a, ones(1, N)); // 如果N是你想要的采样点数
plot(t, h)
xlabel('Time (samples)')
ylabel('Amplitude')
title('Impulse Response of H1(n)')
```
极点影响时域波形的主要原理是:每个极点对应着系统的截止频率或响应的一个衰减部分。如果极点靠近单位圆,则系统的响应会更快地衰减;如果极点远离单位圆(如本例中的0.8),则响应可能更慢并有较长的持续时间。在h(n)波形中,你会看到随着n的增长,响应从初始峰值逐渐衰减,这主要是由极点位置决定的。
阅读全文