基于matlab的系统函数求频率响应画图
时间: 2023-11-04 08:03:42 浏览: 46
在MATLAB中,可以使用freqz函数来计算和绘制数字滤波器的频率响应。freqz函数的语法如下:
```matlab
[H, w] = freqz(b,a,n,Fs)
```
其中,b和a是数字滤波器的系数,n是所需的频率响应点数,Fs是采样频率。freqz函数返回频率响应H和对应的频率w。
例如,假设我们有一个数字低通滤波器,其传递函数为:
```
H(z) = 1 / (1 + 0.5z^-1)
```
我们可以使用以下代码计算和绘制其频率响应:
```matlab
b = [1]; % 分子系数
a = [1, 0.5]; % 分母系数
n = 1024; % 频率响应点数
Fs = 1000; % 采样频率
[H, w] = freqz(b, a, n, Fs);
plot(w/(2*pi), abs(H)); % 绘制振幅频率响应
grid on;
xlabel('Frequency (Hz)');
ylabel('Magnitude');
```
这将会绘制出低通滤波器的振幅频率响应图像。注意,我们需要将频率w从弧度转换为赫兹,以便更好地理解频率响应。
相关问题
matlab求单位冲激响应并用四种方法画图
假设你要求一个线性时不变系统的单位冲激响应,可以使用以下的四种方法:
1. 解微分方程
假设你知道系统的微分方程,可以通过输入一个单位冲激函数 $\delta(t)$,求解微分方程得到系统的单位冲激响应 $h(t)$。例如,对于一个一阶系统,微分方程为:
$$\frac{dh(t)}{dt}+a_1h(t)=\delta(t)$$
其中 $a_1$ 是常数。将 $\delta(t)$ 代入上式,可以得到:
$$\frac{dh(t)}{dt}+a_1h(t)=1$$
这是一个一阶常微分方程,可以通过求解得到:
$$h(t)=\frac{1}{a_1}e^{-a_1t}u(t)$$
其中 $u(t)$ 是单位阶跃函数。
2. 系统的频率响应
假设你知道系统的频率响应 $H(\omega)$,其中 $\omega$ 是角频率,可以通过傅里叶反变换得到系统的单位冲激响应 $h(t)$。具体地,有:
$$h(t)=\frac{1}{2\pi}\int_{-\infty}^{\infty}H(\omega)e^{j\omega t}d\omega$$
其中 $j$ 是虚数单位。
3. 卷积
假设你知道系统的单位阶跃响应 $g(t)$,可以通过输入一个单位冲激函数 $\delta(t)$,计算系统的单位冲激响应 $h(t)$。具体地,有:
$$h(t)=\delta(t)*g(t)$$
其中 $*$ 表示卷积运算。
4. 逆Z变换
假设你知道系统的Z变换 $H(z)$,可以通过逆Z变换得到系统的单位冲激响应 $h(n)$。具体地,有:
$$h(n)=\frac{1}{2\pi j}\oint H(z)z^{-n-1}dz$$
其中 $\oint$ 表示逆时针单位圆周积分。
画图的话,可以使用 Matlab 的 plot 函数。对于第一种方法,可以使用符号计算工具箱求解微分方程,并使用 ezplot 函数画图。对于第二种方法,可以使用 freqz 函数计算频率响应,并使用 plot 函数画图。对于第三种方法,可以使用 conv 函数计算卷积,并使用 plot 函数画图。对于第四种方法,可以使用 iztrans 函数计算逆Z变换,并使用 stem 函数画图。
下面是一个 Matlab 代码示例,其中假设系统的微分方程为 $\frac{dh(t)}{dt}+0.5h(t)=\delta(t)$:
```matlab
syms t s
H = 1/(s+0.5); % 求解频率响应
h1 = ilaplace(H); % 求解单位冲激响应
figure;ezplot(h1,[0,10]); % 用 ezplot 画图
t = 0:0.01:10;
h2 = filter(1,[1 0.5],[1 zeros(1,length(t)-1)]); % 求解单位阶跃响应
h3 = conv(h2,[1 zeros(1,length(t)-1)]); % 求解单位冲激响应
figure;plot(t,h3(1:length(t))); % 用 plot 画图
H4 = 1/(z+0.5); % 求解Z变换
h4 = iztrans(H4); % 求解逆Z变换
n = 0:20;
figure;stem(n,h4(1:length(n))); % 用 stem 画图
```
已知系统的微分⽅程为y′′+5y′+6y=2u′+2u,请用MATLAB求系统的频率响应函数,并画出幅频和相频特性曲线;计算系统的冲击响应并画图;当输入为sint时系统的零状态响应并画图
首先,我们可以将微分方程转化为传递函数形式,得到系统的频率响应函数:
```
s = tf('s');
H = 2/(s^2 + 5*s + 6);
```
接下来,我们可以使用MATLAB的`bode`函数绘制系统的幅频和相频特性曲线:
```
bode(H);
```
这将绘制出系统的幅频特性曲线和相频特性曲线。
接下来,我们可以计算系统的冲击响应,并画出其图像:
```
t = 0:0.1:10;
impulse(H, t);
```
这将绘制出系统的冲击响应图像。
最后,我们可以计算系统对输入为`sint`的零状态响应,并画出其图像:
```
t = 0:0.01:10;
u = sin(t);
lsim(H, u, t);
```
这将绘制出系统对输入为`sint`的零状态响应图像。