用matlab生成代码关于某二阶谐振电路的系统函数H(s)为 ,其中 为系统的谐振角频率,Q为系统的品质因数。 (1) 画出 , 时系统的零极点分布图,以及系统的幅度响应,观察系统零极点分布对系统幅度响应的影响;(2)画出 , , , , 时系统的零极点分布图,以及系统的幅度响应,观察系统零极点分布对系统幅度响应的影响。
时间: 2023-11-18 15:26:11 浏览: 31
好的,以下是 MATLAB 代码实现:
首先,定义系统的参数:
```matlab
w0 = 1000; % 谐振角频率
Q = 10; % 品质因数
```
然后,计算系统的传递函数 H(s):
```matlab
num = [w0^2];
den = [1, w0/Q, w0^2];
H = tf(num, den);
```
接下来,绘制系统的零极点分布图和幅度响应:
```matlab
figure;
subplot(2, 1, 1);
pzmap(H);
title('Pole-Zero Plot (w = w0)');
subplot(2, 1, 2);
bode(H);
title('Magnitude Response (w = w0)');
```
这里使用了 MATLAB 自带的函数 `pzmap` 绘制零极点分布图,使用 `bode` 函数绘制幅度响应。
最后,我们可以修改系统的频率参数,重新绘制图像:
```matlab
w = [w0/10, w0/5, w0, w0*5, w0*10];
figure;
for i = 1:length(w)
Hw = evalfr(H, 1i*w(i)); % 计算当前频率下的传递函数
subplot(length(w), 2, 2*i-1);
pzmap(Hw);
title(['Pole-Zero Plot (w = ' num2str(w(i)) ')']);
subplot(length(w), 2, 2*i);
bode(Hw);
title(['Magnitude Response (w = ' num2str(w(i)) ')']);
end
```
这里使用了 `evalfr` 函数计算当前频率下的传递函数,然后分别绘制零极点分布图和幅度响应。
完整的 MATLAB 代码如下:
```matlab
%% 定义系统参数
w0 = 1000; % 谐振角频率
Q = 10; % 品质因数
%% 计算传递函数
num = [w0^2];
den = [1, w0/Q, w0^2];
H = tf(num, den);
%% 绘制零极点分布图和幅度响应
figure;
subplot(2, 1, 1);
pzmap(H);
title('Pole-Zero Plot (w = w0)');
subplot(2, 1, 2);
bode(H);
title('Magnitude Response (w = w0)');
%% 修改频率参数,重新绘制图像
w = [w0/10, w0/5, w0, w0*5, w0*10];
figure;
for i = 1:length(w)
Hw = evalfr(H, 1i*w(i)); % 计算当前频率下的传递函数
subplot(length(w), 2, 2*i-1);
pzmap(Hw);
title(['Pole-Zero Plot (w = ' num2str(w(i)) ')']);
subplot(length(w), 2, 2*i);
bode(Hw);
title(['Magnitude Response (w = ' num2str(w(i)) ')']);
end
```