【信号与系统】【北京航空航天大学】实验三、连续时间信号的频域分析 【MATLAB】

发布时间:2024年01月15日

一、实验目的

1、掌握 傅立叶变换(The Fourier Transform) 及其性质;
2、掌握连续时间信号傅立叶变换的数值计算方法;
3、掌握利用 MATLAB 实现信号的幅度调制(Amplitude Modulation, AM) 的方法;
4、掌握利用 MATLAB 实现对周期信号频谱分析。

二、实验内容

1、
在这里插入图片描述

MATLAB代码:

>> clear all;
>> t = -4 : 0.001 : 4;
>> N = input('N = ');
N = 3
>> c0 = 0.5;
>> fN = c0 * ones(1, length(t));
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> figure
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');
>> figure
>> fN = c0 * ones(1, length(t));
>> N = input('N = ');
N = 9
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');
>> figure
>> fN = c0 * ones(1, length(t));
>> N = input('N = ');
N = 24
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');
>> figure
>> fN = c0 * ones(1, length(t));
>> N = input('N = ');
N = 70
>> for n = 1 : 2 : N
fN = fN + cos(n * pi * t / 2) * sinc(n / 2);
end
>> plot(t, fN);
>> title(['N = ' num2str(N)]);
>> xlabel('t');
>> ylabel('f(t)');

公式推导:

在这里插入图片描述

叠加生成的信号波形图

(1)N = 3

在这里插入图片描述

(2)N = 9

在这里插入图片描述

(3)N = 24

在这里插入图片描述

(4)N = 70

在这里插入图片描述
2、

在这里插入图片描述

MATLAB代码:

(1)、绘制方波信号:

>> clear all;
>> t = -6 : 0.001 : 6;
>> n = round(length(t) / 12);
>> f = [-2 * ones(n, 1); 2 * ones(2 * n, 1); -2 * ones(2 * n, 1); 2 * ones(2 * n, 1);-2 * ones(2 * n, 1); 2 * ones(2 * n, 1); -2 * ones(n + 1, 1)];
>> figure
>> plot(t, f);
>> axis([-6 6 -3 3]);
>> grid on;
>> title('方波信号', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');

(2)、进行谐波叠加:

>> clear all;
>> t = -4 : 0.001 : 4;
>> fN = 0;
>> N = 2;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> m = round(length(t) / 8);
>> figure
>> subplot(2, 2, 1);
>> f = [2 * ones(m, 1); -2 * ones(2 * m, 1); 2 * ones(2 * m, 1); -2 * ones(2 * m, 1); 2 * ones(m + 1, 1)];
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~2次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
>> subplot(2, 2, 2);
>> fN = 0;
>> N = 4;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~4次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
>> subplot(2, 2, 3);
>> fN = 0;
>> N = 6;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~6次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');
>> subplot(2, 2, 4);
>> fN = 0;
>> N = 100;
>> for n = 1 : N
fN = fN + 4 * (sinc(n / 2) - sinc(n)) * cos(n * pi / 2 * t);
end
>> plot(t, f);
>> grid on;
>> axis([-4 4 -3 3]);
>> hold on;
>> plot(t, fN);
>> title('1~100次谐波叠加', 'FontSize', 14);
>> xlabel('t');
>> ylabel('f(t)');

生成的信号波形图

(1)、方波信号:

在这里插入图片描述

(2)、谐波叠加结果:

在这里插入图片描述
3、

在这里插入图片描述

求傅里叶级数过程:

在这里插入图片描述

MATLAB代码:

>> clear all;
>> N = 10;
>> n1 = -N : -1;
>> C1 = 4 * j * sin(n1 * pi / 2) / pi ^ 2 ./ n1 .^ 2;
>> C0 = 0;
>> n2 = 1 : N;
>> C2 = 4 * j * sin(n2 * pi / 2) / pi ^ 2 ./ n2 .^ 2;
>> Cn = [C1, C0, C2];
>> n = -N : N;
>> figure
>> subplot(2, 1, 1);
>> stem(n, abs(Cn));
>> axis([-10 10 0 0.5]);
>> grid on;
>> ylabel('Cn的幅度谱');
>> subplot(2, 1, 2);
>> stem(n, angle(Cn));
>> grid on;
>> ylabel('Cn的相位谱');
>> xlabel('\omega/\omega_0');

生成的幅度谱相位谱

在这里插入图片描述
4、

在这里插入图片描述

求傅里叶级数过程:

在这里插入图片描述

MATLAB代码:

>> clear all;
>> n1 = -10 : -1;
>> n2 = 1 : 10;
>> C1 = 2 * sinc(n1 / 2) + 4 * j * sin(n1 * pi / 2) / pi ^ 2 ./ n1 .^ 2;
>> C2 = 2 * sinc(n2 / 2) + 4 * j * sin(n2 * pi / 2) / pi ^ 2 ./ n2 .^ 2;
>> C0 = 0;
>> n = -10 : 10;
>> Cn = [C1, C0, C2];
>> figure
>> subplot(2, 1, 1);
>> stem(n, abs(Cn));
>> grid on;
>> ylabel('Cn的幅度谱');
>> subplot(2, 1, 2);
>> stem(n, angle(Cn));
>> grid on;
>> ylabel('Cn的相位谱');
>> xlabel('\omega/\omega_0');

生成的幅度谱相位谱

在这里插入图片描述

5、思考题

第2题中所提及的不同的产生方波信号的方法,分别有什么优点与缺点?

答:

用本题中的方法产生方波信号的缺点是较为复杂,需要将一个周期分割成若干部分,并对每一部分分别赋值;优点是免去了占空比的计算,且信号不一定以y = 0为中心上下振动;用square函数产生方波信号的优点是函数调用较为简单;缺点是需要先已知或通过计算得出信号的占空比,且只能绘制关于x轴上下对称(以y=0为中心振动)的方波信号。

三、实验收获与感想:

1、 遇到新的函数,可以在命令行中输入 “help + 函数名”命令来了解此函数的用法;

2、 sinc函数的两种定义:

在这里插入图片描述

在这里插入图片描述

MATLAB R2020a中的sinc函数是归一化的sinc函数。

3、 绘制方波时最好在一张图上绘制2~3个周期;

4、 函数用法:ones(n, 1); num2str( ); title函数的格式化用法; abs(Z); angle(Z);

三、参考书目

《信号与系统(第二版)》,【美】Alan V. Oppenheim 等 著,刘树棠 译,北京,电子工业出版社,2020年8月。

文章来源:https://blog.csdn.net/weixin_43031313/article/details/135595706
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。