目录
1、实验目的
2、实验内容
1、周期信号的分析
2、非周期信号的分析
3、连续时间系统的响应
1、熟悉信号的合成、分解原理,了解信号频谱的含义,加深对傅里叶级数的理解。
2、掌握连续时间信号的傅立叶变换及逆变换的实现方法,掌握连续时间系统的频域分析方法,熟悉使用 MATLAB 来分析连续时间信号频谱图的方法。
(1)如图所示的周期锯齿波信号,其中 T=2pi,试用 MATLAB求信号的傅里叶级数。
(2)试用MATLAB绘出上图所示周期锯齿波信号的频谱图。
%1.1 求信号的傅里叶级数
%信号在正负半周期的表达式
syms t n T;
f1 = 4/T * t + 1; % k = 2 / (T/2)
f2 = -4/T * t + 1;
%int函数实现积分运算,并求系数 a0
%int(积分函数, 积分上限, 积分下限)
a0 = 1 / T * (int(f1, -T/2, 0) + int(f2, T/2, 0));
%an相关 被积函数
ya1 = f1 * cos(n * 2*pi / T * t);
ya2 = f2 * cos(n * 2*pi / T * t);
%bn相关 被积函数
yb1 = f1 * sin(n * 2*pi / T * t);
yb2 = f2 * sin(n * 2*pi / T * t);
%求系数 an
an = 2 / T * (int(ya1, -T/2, 0) + int(ya2, 0, T/2));
%求系数 bn(偶函数 bn = 0,可以不用算)
bn = 2 / T * (int(yb1, -T/2, 0) + int(yb2, 0, T/2));
%1.2 绘出周期锯齿波信号的频谱图
%频谱图区间
n = 1: 10;
%计算系数 an1
%subs符号计算函数
%R = subs(S):用由调用函数或Matlab工作空间中获取的值替代了在符号表达式S中的所有当前的变量。
an1 = subs(an);
an2 = [0, an1];
%使用stem函数绘制频谱图
%stem(X,Y):在X的指定点处画出数据序列Y
%stem(...,'filled'):以实心的方式画出茎秆
h = stem([0, n], an2, 'filled');
xlabel('\omega');
ylabel('c_n');
%添加网格线
grid on;
(1)已知某一连续时间信号为
试绘出它的时域波形及相应的频谱图。
%2.1 试绘出f(t)=e^(-3t)u(t)的时域波形及相应的频谱图
syms t w;
%f(t)函数表达式,heaviside函数表示单位阶跃函数
f = exp(-3 * t) * heaviside(t);
%用函数 fourier()求 f(t)的傅里叶变换
Fw = fourier(f);
%subplot(m, n, p):
%其中,m(行)和n(列)指定将图形窗口分成m*n个绘图区,
%p指定当前活动区,p的大小以右行方向计数
subplot(3, 1, 1);
%绘 f(t)的时域波形
ezplot(f);
title('时域波形 f(t)=e^-^3^tu(t)');
xlabel('t');
ylabel('f(t)');
grid on;
w = -3 : 0.01 : 3;
Fwl = subs(Fw);
%绘 f(t)的幅度谱
%abs函数:求数值的绝对值和复数的幅值
subplot(3,1,2);
plot(w, abs(Fwl));
title('幅度谱 ');
xlabel('角频率 (\omega)rad/s');
ylabel('幅度|H(j\omega)|');
grid on;
%绘 f(t)的相位谱,
%angle函数:求复数相角
subplot(3, 1, 3);
plot(w, angle(Fwl) * pi / 180);
title('相位谱 ');
xlabel('角频率 (\omega)rad/s');
ylabel('相位 \phi(rad)');
grid on;
(2)若信号f(t)的傅立叶变换
试绘出该信号的时域波形和相应的频谱图。(取 tao=3)
%2.2 若信号 f(t)的傅立叶变换F(jw)=tao*sin(tao*w/2)/(tao*w/2)
%绘出该信号的时域波形和相应的频谱图。 (取 tao=3)
syms t w tao;
tao = 3;
Fw = tao * sin(tao * w/2) / (tao * w/2);
%使用 ifourier函数求 Fw的傅里叶反变换
h = ifourier(Fw,t);
%绘 f(t)的时域波形
subplot(2, 2, 1);
ezplot(h, [-2, 2]);
title('时域波形 ');
grid on;
%绘制 f(t)的频域波形
subplot(2, 2, 2);
ezplot(Fw,[-10, 10]);
title('频谱图 ');
xlabel('\omega');
grid on;
%绘 f(t)的幅度频谱图
subplot(2, 2, 3);
ezplot(abs(Fw), [-10, 10, -0.5, 3.5]);
title('幅度谱 ');
xlabel('\omega');
grid on;
%绘 f(t)的相位频谱图
subplot(2, 2, 4);
ezplot(angle(Fw),[-10, 10]);
title('相位谱 ');
xlabel('\omega');
grid on;
(1)系统传递函数为
(a) 用 MATLAB绘制幅度响应和相位响应曲线,分析该系统的频率特性,并判断系统是否为无失真传输系统。
%3.1系统传递函数为 H(jw)=1-jw/1+jw
%绘制幅度响应和相位响应曲线,分析该系统的频率特性,并判断系统是否为无失真传输系统
syms w t;
Hw = (1 - 1j * w) / (1 + 1j * w);
w = -5 : 0.01 : 5;
Fw1 = subs(Hw);
%绘 f(t)的幅度谱
subplot(2, 1, 1);
plot(w, abs(Fw1));
title('幅度谱 ');
xlabel('角频率 (\omega)rad/s');
ylabel('幅度 |H(j\omega)|');
grid on;
%绘 f(t)的相位谱
subplot(2, 1, 2);
plot(w, angle(Fw1) * pi / 180);
title('相位谱 ');
xlabel('角频率 (\omega)rad/s');
ylabel('相位 \phi(rad)');
grid on;
%幅度谱为常数,相位谱非线性,可判断出有失真
(b) 用 MATLAB求系统的单位冲激响应。
%3.2系统传递函数为 H(jw)=1-jw/1+jw
%求系统的单位冲激响应
syms w t;
Hw = (1- 1j * w)/(1 + 1j * w);
%使用 ifourier函数傅里叶反变换求冲激响应
ht = ifourier(Hw, t);
ezplot(ht);
title('冲激响应 ');
xlabel('t');
ylabel('h(t)');
grid on;
时, 用 MATLAB求系统的零状态响应,绘出输入信号和响应的波形。
%3.3当输入为 f(t)=e^(-2t)u(t)时,求系统的零状态响应,绘出输入信号和响应波形
ft = exp(-2 * t) * heaviside(t);
subplot(1, 2, 1);
ezplot(ft);
title('输入信号 f(t)=e^-^2^tu(t)');
xlabel('t');
ylabel('f(t)');
grid on;
Fw = fourier(ft);
Yw = Fw * Hw;
yt = ifourier(Yw, t);
%求零状态响应
subplot(1, 2, 2);
ezplot(yt,[-1, 4, -1, 0.5]);
title('零状态响应 ');
xlabel('t');
ylabel('y_f(t)');
grid on;