matlab频谱分析.doc

上传人:b****2 文档编号:1536025 上传时间:2022-10-22 格式:DOC 页数:10 大小:39.50KB
下载 相关 举报
matlab频谱分析.doc_第1页
第1页 / 共10页
matlab频谱分析.doc_第2页
第2页 / 共10页
matlab频谱分析.doc_第3页
第3页 / 共10页
matlab频谱分析.doc_第4页
第4页 / 共10页
matlab频谱分析.doc_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

matlab频谱分析.doc

《matlab频谱分析.doc》由会员分享,可在线阅读,更多相关《matlab频谱分析.doc(10页珍藏版)》请在冰豆网上搜索。

matlab频谱分析.doc

设计出一套完整的系统,对信号进行频谱分析和滤波处理;

1.产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。

2.采集一段含有噪音的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号),对其进行采样和频谱分析,根据分析结果设计出一合适的滤波器滤除噪音信号。

%写上标题

%设计低通滤波器:

[N,Wc]=buttord()

%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc);%设计Butterworth低通滤波器

[h,f]=freqz();%求数字低通滤波器的频率响应

figure

(2);%打开窗口2

subplot(221);%图形显示分割窗口

plot(f,abs(h));%绘制Butterworth低通滤波器的幅频响应图

title(巴氏低通滤波器'');

grid;%绘制带网格的图像

sf=filter(a,b,s);%叠加函数S经过低通滤波器以后的新函数

subplot(222);

plot(t,sf);%绘制叠加函数S经过低通滤波器以后的时域图形

xlabel('时间(seconds)');

ylabel('时间按幅度');

SF=fft(sf,256);%对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换

w=%新信号角频率

subplot(223);

plot());%绘制叠加函数S经过低通滤波器以后的频谱图

title('低通滤波后的频谱图');

%设计高通滤波器

[N,Wc]=buttord()

%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc,'high');%设计Butterworth高通滤波器

[h,f]=freqz();%求数字高通滤波器的频率响应

figure(3);

subplot(221);

plot());%绘制Butterworth高通滤波器的幅频响应图

title('巴氏高通滤波器');

grid;%绘制带网格的图像

sf=filter();%叠加函数S经过高通滤波器以后的新函数

subplot(222);

plot(t,sf);;%绘制叠加函数S经过高通滤波器以后的时域图形

xlabel('Time(seconds)');

ylabel('Timewaveform');

w;%新信号角频率

subplot(223);

plot());%绘制叠加函数S经过高通滤波器以后的频谱图

title('高通滤波后的频谱图');

%设计带通滤波器

[N,Wc]=buttord([)

%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc);%设计Butterworth带通滤波器

[h,f]=freqz();%求数字带通滤波器的频率响应

figure(4);

subplot(221);

plot(f,abs(h));%绘制Butterworth带通滤波器的幅频响应图

title('butterbandpassfilter');

grid;%绘制带网格的图像

sf=filter(a,b,s);%叠加函数S经过带通滤波器以后的新函数

subplot(222);

plot(t,sf);%绘制叠加函数S经过带通滤波器以后的时域图形

xlabel('Time(seconds)');

ylabel('Timewaveform');

SF=fft();%对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换

w=(%新信号角频率

subplot(223);

plot('));%绘制叠加函数S经过带通滤波器以后的频谱图

title('带通滤波后的频谱图');

matlab如何做频谱分析

%----------------------------------------------------------------------------------------------------------------

%方案1:

“x=a*cos(2*pi*w*t)”的形式:

%----------------------------------------------------------------------------------------------------------------

%注意:

1.时域的持续时间范围应较大;

%        2.频率w与序列k的对应关系(N为序列总长度):

w=1/dt*k/N;

%        3.采样频率1/dt应大于w的2倍

%        4.结果曲线的峰值的横坐标对应的就是w和-w值

%----------------------------------------------------------------------------------------------------------------

a=0.75;

w=pi/3;

dt=0.2;

t=[-30*pi:

dt:

30*pi];

N=size(t,2);

x=a*cos(2*pi*w*t);

y=fft(x);

y=fftshift(y);

figure;

subplot(2,1,1);

plot(t,x);

subplot(2,1,2);

plot(1/dt*(-N/2+1:

N/2)/N,abs(y));

%----------------------------------------------------------------------------------------------------------------

%方案2:

“x=a*cos(w*t)”的形式:

%----------------------------------------------------------------------------------------------------------------

%注意:

1.时域的持续时间范围应较大;

%        2.频率w与序列k的对应关系(N为序列总长度):

w=1/dt*2*pi*k/N;

%        3.采样频率1/dt应大于w/(2*pi)的2倍

%        4.结果曲线的峰值的横坐标对应的就是w和-w值

%----------------------------------------------------------------------------------------------------------------

a=0.75;

w=pi/3;

dt=1;

t=[-20*pi:

dt:

20*pi];

N=size(t,2);

x=a*cos(w*t);

y=fft(x);

y=fftshift(y);

figure;

subplot(2,1,1);

plot(t,x);

subplot(2,1,2);

plot(1/dt*2*pi*(-N/2:

N/2-1)/N,abs(y));

备注:

由于使用了fftshift,所以得到的频谱序列关于原点对称,如果不需要负半轴的话自行修改一下就ok了

functionf=frequency(x,fs)

dtlen=length(x);

t=(0:

dtlen-1)/fs;

subplot(211);

plot(t,x);

axistight;

y=abs(fft(x))*2/dtlen;

ff=(0:

dtlen/2-1)*fs/dtlen;

subplot(212);

f=y(1:

floor(dtlen/2));

plot(ff,f);

axistight;

return;

Matlab编程实现FFT实践及频谱分析

内容

1.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图

2.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选

3.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱

4.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图

源程序

%*************************************************************************%

%                    FFT实践及频谱分析                  %

%*************************************************************************%

%*************************************************************************%

%***************1.正弦波****************%

fs=100;%设定采样频率

N=128;

n=0:

N-1;

t=n/fs;

f0=10;%设定正弦信号频率

%生成正弦信号

x=sin(2*pi*f0*t);

figure

(1);

subplot(231);

plot(t,x);%作正弦信号的时域波形

xlabel('t');

ylabel('y');

title('正弦信号y=2*pi*10t时域波形');

grid;

%进行FFT变换并做频谱图

y=fft(x,N);%进行fft变换

mag=abs(y);%求幅值

f=(0:

length(y)-1)'*fs/length(y);%进行对应的频率转换

figure

(1);

subplot(232);

plot(f,mag);%做频谱图

axis([0,100,0,80]);

xlabel('频率(Hz)');

ylabel('幅值');

title('正弦信号y=2*pi*10t幅频谱图N=128');

grid;

%求均方根谱

sq=abs(y);

figure

(1);

subplot(233);

plot(f,sq);

xlabel('频率(Hz)');

ylabel('均方根谱');

title('正弦信号y=2*pi*10t均方根谱');

grid;

%求功率谱

power=sq.^2;

figure

(1);

subplot(234);

plot(f,power);

xlabel('频率(Hz)');

ylabel('功率谱');

title('正弦信号y=2*pi*10t功率谱');

grid;

%求对数谱

ln=log(sq);

figure

(1);

subplot(235);

plot(f,ln);

xlabel('频率(Hz)');

ylabel('对数谱');

title('正弦信号y=2*pi*10t对数谱');

grid;

%用IFFT恢复原始信号

xifft=ifft(y);

magx=real(xifft);

ti=[0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1