频谱分析Word文件下载.docx
- 文档编号:19239266
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:8
- 大小:702.17KB
频谱分析Word文件下载.docx
《频谱分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《频谱分析Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
1.2目的和意义
在21世纪的今天,计算机仿真开始应用于工程技术领域的各个方面,计算机仿真不仅减少了产品研发的时间,而且极大的提高了产品的可靠性和实用性,使人机交换能力更强。
信号处理几乎涉及到所有的工程技术领域,但是时域分析只能反映信号的幅值随时间的变化情况,除单频率分量的简谐波外,很难明确揭示信号的频率组成和各频率分量大小。
因此采用频谱分析是信号处理中一个非常重要的分析手段。
1.3主要任务
利用GUI搭建界面布局,编写M文件,完成频谱分析仪的交互式界面。
2.软件设计
设计原理
信号频域分析是采用傅立叶变换将时域信号x(t)变换为频域信号X(f),从而帮助人们从另一个角度来了解信号的特征。
信号频谱X(f)代表了信号在不同频率分量成分的大小,能够提供比时域信号波形更直观更丰富的信息。
时域和频域的对应关系如图1所示
图1
任何周期信号都可以展开成正交函数线性组合的无穷级数。
傅里叶级数的表现形式如式
(1)所示:
(1)
变形为:
工程上习惯将计算结果用图形方式表示,以fn(ω0)为横坐标,bn、an为纵坐标画图,称为实频-虚频谱图。
以fn为横坐标,An为纵坐标画图,则称为幅值-相位谱;
以fn为横坐标,A2为纵坐标画图,则称为功率谱。
实现方法
1、GUI界面设计
通过使用MATLAB的GUI模块设计,自动生成了M程序代码,然后植入自己所设计的程序段,最后通过回调函数得到所需的虚拟频谱分析仪的界面如图所示。
图2
GUI编程
这里主要介绍从声卡录音、直接读取WAV文件,以及对信号进行频谱分析的M代码。
1)声卡输入信号:
Fs=str2double(get(findobj('
Tag'
'
sampfrequency'
),'
String'
));
%读采样频率
handles.y=wavrecord(str2double(get(findobj('
recordtime'
))*Fs,Fs);
%将从声卡输入的信号存储到axis1中的Y轴上去
handles.inputtype=1;
guidata(hObject,handles);
plot(handles.axes1,handles.y);
title('
WAVE'
);
ysize=size(handles.y)
set(handles.samplenum,'
num2str(ysize
(1)));
2)打开WAV文件:
N=10240;
Fs=22050;
n=0:
N-1;
t=n/Fs;
[x,Fs]=wavread(get(findobj('
filename'
%通过读取控件filename的值,来获得文件名,并打开
x=x(:
1);
wavplay(x,22050);
%播放WAV文件
axes(handles.axes1);
plot(t,x(1:
N));
gridon;
y=fft(x,N);
py=2/N*sqrt(y.*conj(y));
%对信号进行频谱分析
fa=n*Fs/N;
axes(handles.axes2);
plot(fa(1:
N/10),py(1:
N/10),'
g'
)
guidata(hObject,handles);
3)数值发生器信号的生成:
A=str2double(get(handles.amp,'
string'
f=str2double(get(handles.frequency,'
B=str2double(get(handles.phase,'
%获取幅值、相位、和频率Fs=str2double(get(findobj('
t=0:
1/Fs:
400/f;
N=str2double(get(handles.sampnum,'
Fs=str2double(get(handles.sampfrequency,'
ifhandles.wavetype==1;
x=A*sin(2*pi*f*t+B);
%生成正弦信号
elseifhandles.wavetype==2;
x=A*sawtooth(2*pi*f*t+B);
%生成锯齿坡信号
elseifhandles.wavetype==3;
x=A*square(2*pi*f*t+B);
%生成方波信号
elseifhandles.wavetype==4
x=randn(size(100*t));
%生成白噪声信号
else
end
guidata(hObject,handles)
handles.y=x;
%将信号值存储至句柄y
plot(handles.axes1,handles.y(1:
1000))
4)对信号进行频谱分析:
%读取采样频率
N=str2double(get(findobj('
sampnum'
%读取采样点数
sample=handles.y;
%读取信号f=linspace(0,Fs/5,N/5);
Y=fft(sample,N);
Y=Y(1:
N/5);
plot(handles.axes2,f,2/N*sqrt(Y.*conj(Y)))%得出幅值谱
gridon
plot(handles.axes3,f,angle(Y))%得出相位谱
plot(handles.axes4,f,abs(Y).^2)%得出功率谱
xlabel(handles.axes2,'
freqency(Hz)'
xlabel(handles.axes3,'
xlabel(handles.axes4,'
ylabel(handles.axes2,'
amplitude'
ylabel(handles.axes3,'
phase(rad)'
ylabel(handles.axes4,'
power'
程序运行演示
程序初始界面
图3
录音后频谱分析的结果
图4
对WAV文件进行分析
图5
对锯齿波进行分析
图6
3.总结
这次作业主要是通过三种方式即从声卡输入、直接读取WAV文件和信号发生器获取信号,在得到这三种信号后,对其进行频谱分析。
通过这次作业,对频谱分析有了一个更深刻、更全面的认识。
在这次作业中,也有一些不足之处,如信号的周期等的分析,由于还没有完全弄出来,所以没有在最终的作业中展示出来。
另一方面,信号的频谱分析不仅仅只有FFT这一种方法,还有ARMA等时间序列分析方法,对于那些高阶信号,通过ARMA模型能够更好的对信号进行分析,并且可以和FFT分析的结果进行比较,但是由于这周时间紧张,所以并没有做出来,在以后平时的学习中,是应该去实践一下的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 频谱 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)