一、实验目的
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);文章来源:https://www.toymoban.com/news/detail-803027.html
三、参考书目
《信号与系统(第二版)》,【美】Alan V. Oppenheim 等 著,刘树棠 译,北京,电子工业出版社,2020年8月。文章来源地址https://www.toymoban.com/news/detail-803027.html
到了这里,关于【信号与系统】【北京航空航天大学】实验三、连续时间信号的频域分析 【MATLAB】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!