Matlab方波频谱分析课程设计报告.docx
通信系统建模与仿真课程设计2023 级 通信工程 专业 1013072 班级题目基于 Matlab/Simulink 的信号频谱的估量姓名学号指导教师胡娟,王丹,王娜,闫利超2023 年 6 月 14 日1 任务书(1) 用Matlab 编程方式产生一个 100Hz 的方波,画出其波形。并用 fft 指令计算其频谱,做出幅度谱和相位谱,与理论结果进展比照。(2) 用Simulink 方式重做上题,并通过统计模块在时域和频域同时计算信号的功率,看两者计算结果是否全都,验证帕萨瓦尔定理。2 理论分析方波的一个周期可用ìTîf ( t ) = í1 , 0 < t <2- 1 , - T2< t < 0依据周期信号傅里叶级数系数的定义,有1TF=ò T / 2 n-T / 2f (t)e- jnWt dtp pp因此,方波信号的 f (t) 的傅里叶级数开放式为AjnpTft= å¥TF e jnWt = å¥n(1- cos np )e jnWtn=-¥n=-¥依据周期信号傅里叶级数同傅里叶变换之间的关系:ft= å¥TF e jnWt « å¥n2pF d (w - nW)nn=-¥n=-¥可知,方波信号的傅里叶变换是ft« Hjw=Tå¥j 2 A (cos np -1)d (w - nW)nn=-¥明显,当 n 为偶数时,为,因此方波信号中只存在奇次谐波,其功率谱4 A2n22å¥Hjw =(cos np -1)2 d (w - nW)n=-¥化为以频率为自变量表示的功率密度谱,得到Hf2 =å¥A2n2p 2n=-¥(cos np -1)2 d ( f -)nTn2可见,方波在几次谐波处存在冲激谱线,其功率谱谱线冲激强度为数列 C ,n 取奇数,C 为常数。离散时间信号的帕斯瓦尔定理:对于 N 点的离散序列及其离散傅里叶变换 f (n) « F (k ) ,其时域能量等于频域能量,即E = T åN -1n=02f (n)=åN -1 F (k ) 2TNk =0时域和频域的平均功率关系为ELP=av=åN -1ENT1Nn=02f (n)=åN -1 F (k ) 2其中,T 为采1N 2k =0样时间间隔;N 为离散时间序列的点数; L = NT 为离散时间序列的时间长度。3 Matlab 代码详述clear; clc; fs=1e6;t1=0:1/fs:0.1;%计算时间范围ft=square(2*pi*100*t1,50); subplot(3,1,1);plot(t1,ft);%时域波形axis(0 0.1 -1.2 1.2);T1=0.01;%信号周期w1=2*pi/T1;%信号角频率n=-59:2:59;%奇次谐波数W=w1.*n;%数字角频率F_w=-4*j./n;%频谱理论结果subplot(3,1,2);stem(W,abs(F_w);%频域幅度谱hold on;w_m=3e4;%截断频率T=pi/w_m;%采样间隔L=5.9;t=0:T:L;%时域截断x_t=square(2*pi*100*t,50);%信号序列N=length(x_t);%序列长度点数 X_k=fft(x_t);%FFT计算w0=2*pi/(N*T);%离散频率间隔kw=2*pi/(N*T).*0:N-1;%离散频率样点X_kw=T.*X_k;%乘以T得到连续傅里叶变换频谱的样值plot(kw-w_m,abs(fftshift(X_kw),”.”,”MarkerSize”,10);%做出数值计算的幅度谱点subplot(3,1,3);stem(W,angle(F_w);%频域相位谱hold on;plot(kw-w_m,angle(fftshift(X_kw);%做出数值计算的相位谱点4 SIMULINK各模块说明由于 Simulink 中 FFT 模块只承受 2 的整数幂次点数数据,故设计变换数据采样率为 2048 样值/秒。FFT 变换数据长度到 2048,对应时间长度为 1 秒。因此,频率区分率为 1Hz。由式Fff = k NTs|2 = Ts· DFT f (n) 2= T 2 · F (k ) 2s确定功率谱估量值。其中Ts= 1/ 2048 秒,N=2048。依据教材式3.34确定频域、时域平均功率,即P=av1 åN -1Nn=02f (k )=1åN -1 F (k ) 2N 2k =0图 1 为测试模型。其中,仿真步长为固定的 1/2048 秒。各个参数设置如下:Zero-Order Hold 采样得到离散时间信号以便进展离散傅里叶变换,设置采样时间间隔也为 1/2048 秒。Buffer 模块设置缓存长度为2048,刚好能缓存 1 秒的数据。承受FFT 模块进展快速傅里叶变换, 变换点数取决于数据帧长度。以 Abs 模块、乘法器模块、Mean 平均模块以及增益模块等实现对频域、时域平均功率的计算。Display 模块显示时域功率计算结果,Display1 模块显示时域功率计算结果, 明显两者应当一样,为 1W幅度为 1V 的方波理论计算功率为 1W。用 Vector Scope 观看功率谱,同时用示波器观测时域波形。模型图如下所示:5 仿真结果分析编程输出结果如图 1 所示,时域仿真时间 0.1s,但是该信号时域是无限长的,因此其频谱也是无限宽的。经理论公式计算画图显示后觉察,当频率大于30000Hz 后,幅度谱值接近于零。因此做FFT 变换时选择频域截断区为 30000Hz。图 1编程仿真结果图 2Simulink 仿真输出的方波时域波形图 3 Simulink 仿真输出的幅度谱图 4Simulink 仿真输出的功率谱6 遇到的问题及解决的方法在产生方波公式时,始终无从下手。数学表达式很简洁,可是无法在 matlab 脚本文件编程准确实现。总有不尽人意的地方。后来改用matlab 程序库函数square 函数输出方波,以前没用过这个函数, 又查了查这个函数的用法,以及它的内容与数学公式的差异,收获挺大的。在计算连续周期函数方波的频谱时,遇到了一系列的问题。由于方波是由函数输出的,所以在理论计算时明显用不到。所以改用方波的数学表达式来计算频谱。其中应用到了信号与系统上相关章节,由于这门课是去年修完的,记忆不太完整,所以又翻了翻这本书,查找了相关学问,从而正确计算出了计算方波频谱的数学表达式。在写程序时觉察数学表达式和程序的表达还是有差异的,又认真学习了程序的表达,最终写出相对简洁简洁理解的理论编程程序。对于理论与实践收获还是相当大的。7 完毕语结本文介绍了基于MATLAB/Simulink 的信号频谱的估量和使用MATLAB/ .M 文件、Simulink 对其进展仿真的根本方法。通过在MATLAB 中编程能够实现对信号进展fft 变换并计算其频谱的分析, 而在MATLAB 的Simulink 环境中可以通过构建可视化系统进展动态的仿真, 得到较为直观的试验结果, 使得对调制系统的分析变得格外便捷,在原有的根底上,更加深了对信号进展 fft 变换并计算其频谱的分析理解。8 指导教师评语指导教师:成绩: