现在的位置: 首页 > 综合 > 正文

使用MATLAB进行频谱分析

2018年03月16日 ⁄ 综合 ⁄ 共 679字 ⁄ 字号 评论关闭

考研复试数字信号处理,今天遇到个问题,想用MATLAB验证一下自己的想法,刚一用发现手生了不少,以前这东西我用的可是非常熟练,哎!编程这东西要经常玩才行哟!今天把笔记给记下来,不然以后用时有得半天找资料的!

一、用fft进行频谱分析,探讨频率分辨率与频谱分析的关系:

     是FFT分析代码

clear all ;%清空内存变量
clc ;%清屏

%确定傅里叶分析常数
Fs=256;%采样频率
Tp=0.25 ;%采样持续时间,这里可以使用不同的采样时间,观察采样分辨率对频谱分析的影响,

%如果Tp=0.2,下面信号频率为10就看不到,如果是0.25频率分辨率刚好为2,可以看到频率为8和10的分量,

%原始信号
f1=10 ;%频率一
f2=8 ;%频率二
t=0:1/Fs:Tp ;
figure(1) ;
y=cos(2*pi*f1*t)+cos(2*pi*f2*t) ; %原始信号
stem(t,y) ;%画出原始信号

%傅里叶变换
N=2^(ceil(log2(length(y)))) %确定信号FFT长度
F=Fs/N %频率分辨率
y_fft=fft((y),N) ;%快速傅里叶变换
f=0:Fs/(N-1):Fs ;
figure(2) ;
stem(f,abs(y_fft)) ;
axis([0,20,0,100]) ;

二、观察一个信号后面补零,对其DFT的影响,通过实验发现没有什么影响!信号补零方法我找了老半天,忘记序列组合方式和产生零序列的方法,这里给记住了:y=[y,zeros(1,100)] ;

三、对原始信号进行零插值,观察信号频谱,发现信号频谱收缩了

四、对原始信号进行抽取,发现原始信号频谱扩展了

抱歉!评论已关闭.