离散系统x(k+1)=2x(k)+u(k),y(t)=-2x(k-t),a=1,K=2时,利用MatLab工具画出时延在0和4h之间中,系统 稳定域的分布。
时间: 2023-06-15 20:06:46 浏览: 90
首先,我们需要将系统的传递函数求出来。根据题目中给出的离散系统,可以得到系统的传递函数为:
$$
H(z) = \frac{Y(z)}{U(z)} = -\frac{2}{1-2z^{-1}}
$$
由于我们需要画出时延在0和4h之间中,系统稳定域的分布,因此需要先求出系统的单位脉冲响应 $h(k)$。可以使用Matlab中的`impz()`函数来求解,代码如下:
```matlab
b = [-2 0];
a = [1 -2];
h = impz(b, a, 20); % 求20个单位脉冲响应系数
```
其中,`b`和`a`分别是传递函数的分子和分母系数,`20`是我们指定的单位脉冲响应系数个数。
接下来,我们需要求出系统的单位脉冲响应 $h(t)$ 的傅里叶变换 $H(\omega)$,可以使用Matlab中的`fft()`函数来求解,代码如下:
```matlab
N = length(h);
H = fft(h, N);
```
其中,`N`是我们指定的FFT变换点数,一般情况下取值为单位脉冲响应系数个数的2的整数次幂。
接着,我们可以使用Matlab中的`freqz()`函数来画出系统的频率响应曲线,并结合单位脉冲响应的傅里叶变换来计算出系统的幅频特性和相频特性,代码如下:
```matlab
fs = 1; % 采样频率为1Hz
w = (0:N-1)./N.*2*pi.*fs; % 计算FFT变换的频率坐标
H = H./N; % 对FFT变换的结果进行归一化
[mag, phase] = freqz(b, a, w); % 计算系统的幅频特性和相频特性
subplot(2,1,1);
plot(w, abs(H), 'b', w, mag, 'r');
title('Magnitude Response');
legend('FFT', 'freqz');
subplot(2,1,2);
plot(w, angle(H), 'b', w, phase, 'r');
title('Phase Response');
legend('FFT', 'freqz');
```
最后,我们需要画出时延在0和4h之间中,系统稳定域的分布。可以使用Matlab中的`stepz()`函数来画出系统的单位脉冲响应的z变换,代码如下:
```matlab
d = 0:0.01:4;
z = exp(1j.*w).*exp(-1j.*w.*fs.*d);
Gz = polyval(b, z)./polyval(a, z);
stepz(Gz);
```
其中,`d`是我们指定的时延范围,`Gz`是系统的z变换,`stepz()`函数可以画出系统在z平面上的稳定域分布。
完整的Matlab代码如下:
```matlab
b = [-2 0];
a = [1 -2];
h = impz(b, a, 20); % 求20个单位脉冲响应系数
N = length(h);
H = fft(h, N);
fs = 1; % 采样频率为1Hz
w = (0:N-1)./N.*2*pi.*fs; % 计算FFT变换的频率坐标
H = H./N; % 对FFT变换的结果进行归一化
[mag, phase] = freqz(b, a, w); % 计算系统的幅频特性和相频特性
subplot(2,1,1);
plot(w, abs(H), 'b', w, mag, 'r');
title('Magnitude Response');
legend('FFT', 'freqz');
subplot(2,1,2);
plot(w, angle(H), 'b', w, phase, 'r');
title('Phase Response');
legend('FFT', 'freqz');
d = 0:0.01:4;
z = exp(1j.*w).*exp(-1j.*w.*fs.*d);
Gz = polyval(b, z)./polyval(a, z);
stepz(Gz);
```
运行上述代码可以得到系统的幅频特性和相频特性曲线,以及稳定域的分布图。
阅读全文