Matlab方波频谱分析课程设计报告Word文档格式.docx
《Matlab方波频谱分析课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《Matlab方波频谱分析课程设计报告Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
方波的一个周期可用
依据周期信号傅里叶级数系数的定义,有
因此,方波信号的的傅里叶级数展开式为
根据周期信号傅里叶级数同傅里叶变换之间的关系:
可知,方波信号的傅里叶变换是
显然,当n为偶数时,,因此方波信号中只存在奇次谐波,其功率谱为
化为以频率为自变量表示的功率密度谱,得到
可见,方波在几次谐波处存在冲激谱线,其功率谱谱线冲激强度为数列,n取奇数,C为常数。
离散时间信号的帕斯瓦尔定理:
对于N点的离散序列及其离散傅里叶变换,其时域能量等于频域能量,即
时域和频域的平均功率关系为
其中,T为采样时间间隔;
N为离散时间序列的点数;
为离散时间序列的时间长度。
3Matlab代码详述
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([00.1-1.21.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));
%频域幅度谱
holdon;
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));
%频域相位谱
plot(kw-w_m,angle(fftshift(X_kw)));
%做出数值计算的相位谱点
4SIMULINK各模块说明
由于Simulink中FFT模块只接受2的整数幂次点数数据,故设计变换数据采样率为2048样值/秒。
FFT变换数据长度到2048,对应时间长度为1秒。
因此,频率分辨率为1Hz。
由式
确定功率谱估计值。
其中秒,N=2048。
依据教材式(3.34)确定频域、时域平均功率,即
图1为测试模型。
其中,仿真步长为固定的1/2048秒。
各个参数设置如下:
Zero-OrderHold采样得到离散时间信号以便进行离散傅里叶变换,设置采样时间间隔也为1/2048秒。
Buffer模块设置缓存长度为2048,刚好能缓存1秒的数据。
采用FFT模块进行快速傅里叶变换,变换点数取决于数据帧长度。
以Abs模块、乘法器模块、Mean平均模块以及增益模块等实现对频域、时域平均功率的计算。
Display模块显示时域功率计算结果,Display1模块显示时域功率计算结果,显然两者应当相同,为1W(幅度为1V的方波理论计算功率为1W)。
用VectorScope观察功率谱,同时用示波器观测时域波形。
模型图如下所示:
5仿真结果分析
编程输出结果如图1所示,时域仿真时间0.1s,但是该信号时域是无限长的,因此其频谱也是无限宽的。
经理论公式计算画图显示后发现,当频率大于30000Hz后,幅度谱值接近于零。
因此做FFT变换时选择频域截断区为30000Hz。
图1编程仿真结果
图2Simulink仿真输出的方波时域波形
图3Simulink仿真输出的幅度谱
图4Simulink仿真输出的功率谱
6遇到的问题及解决的方法
在产生方波公式时,一直无从下手。
数学表达式很简单,可是无法在matlab脚本文件编程准确实现。
总有不尽人意的地方。
后来改用matlab程序库函数square函数输出方波,以前没用过这个函数,又查了查这个函数的用法,以及它的内容与数学公式的差别,收获挺大的。
在计算连续周期函数方波的频谱时,遇到了一系列的问题。
由于方波是由函数输出的,所以在理论计算时显然用不到。
所以改用方波的数学表达式来计算频谱。
其中应用到了《信号与系统(上)》相关章节,由于这门课是去年修完的,记忆不太完整,所以又翻了翻这本书,查找了相关知识,从而正确计算出了计算方波频谱的数学表达式。
在写程序时发现数学表达式和程序的表达还是有差别的,又认真学习了程序的表达,终于写出相对简单容易理解的理论编程程序。
对于理论与实践收获还是相当大的。
7结束语
结本文介绍了基于MATLAB/Simulink的信号频谱的估计和使用MATLAB/.M文件、Simulink对其进行仿真的基本方法。
通过在MATLAB中编程能够实现对信号进行fft变换并计算其频谱的分析,而在MATLAB的Simulink环境中可以通过构建可视化系统进行动态的仿真,得到较为直观的实验结果,使得对调制系统的分析变得十分便捷,在原有的基础上,更加深了对信号进行fft变换并计算其频谱的分析理解。
8指导教师评语
指导教师:
成绩: