MATLAB实现希尔伯特变换以及FFT补零分析

南京信息工程大学  实验(实习)报告

实验(实习)名称  数字信号处理  实验(实习)日期            得分            指导老师                 

学院 电信院 专业 电子信息工程 年级 2020   班次              姓名                  学号 20208327     

1.实验目的

  1. 掌握利用MATLAB求信号的希尔伯特变换;
  2. 掌握利用MATLAB进行信号的FFT运算,对其进行频谱分析;
  3. 掌握利用MATLAB对信号进行补零分析。

2.实验内容

(1)为一正弦信号,长度为25,求其希尔伯特变换;

(2)是两个正弦信号及其白噪声的叠加,试用FFT对其做频谱分析,并对其补零分析2N、3N长度的FFT效果。

  1. 实验步骤和实验结果

(1)为一正弦信号,长度为25,求其希尔伯特变换;

clc;clear;
ts = 0.001;
N = 300; 
f = 50;
k = 0:N-1;
t = k*ts;
y =  sin (2* pi *f*t);
yh = hilbert(y);     
yi =  imag (yh);       
figure
subplot (211)
plot (t, y)
title ( '原sin信号' )
subplot (212)
plot (t, yi)
title ( 'Hilbert变换后信号' )
ylim ([-1,1])

(2)是两个正弦信号及其白噪声的叠加,试用FFT对其做频谱分析,并对其补零分析2N、3N长度的FFT效果。

clear;clc;
fs=200;                            
f1=30; f2=60;                   
N=300;                            
n=1:N;                            
t=(n-1)/fs;                        
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+randn(1,N);  
 
X1=fft(x); 
freq1=(0:N/2)*fs/N;               
X1_abs=abs(X1(1:N/2+1))*2/N;       
 
L=2*N;                            
X2=fft(x,L);                       
freq2=(0:L/2)*fs/L;                
X2_abs=abs(X2(1:L/2+1))*2/N;  

L1=3*N;                            
X3=fft(x,L1);                       
freq3=(0:L1/2)*fs/L1;                
X3_abs=abs(X3(1:L1/2+1))*2/N; 

subplot (411); plot(t,x); 
title('原始信号')
subplot(412); plot(freq1,X1_abs); 
ylim([0 1.5]);
title('补零前FFT谱图')
subplot(413); plot(freq2,X2_abs);
ylim([0 1.5]);
title('补2N零后FFT谱图')
subplot(414); plot(freq3,X3_abs);
ylim([0 1.5]);
title('补3N零后FFT谱图')

 

4.实验小结

(1)本节实验课学习了如何用MATLAB进行信号的希尔伯特变换,对信号做FFT运算、并对其进行频谱分析,以及如何进行补零分析。

(2)正弦信号进行希尔伯特变换后即为余弦信号,但因为只采了25个点的数据,所以转换后的信号波形失真较严重,多采一些点后波形明显有改观,如图1所示。

clear;clc;
fs=200;                            
f1=30; f2=60;                   
N=300;                            
n=1:N;                            
t=(n-1)/fs;                        
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+randn(1,N);  
 
X1=fft(x); 
freq1=(0:N/2)*fs/N;               
X1_abs=abs(X1(1:N/2+1))*2/N;       
 
L=2*N;                            
X2=fft(x,L);                       
freq2=(0:L/2)*fs/L;                
X2_abs=abs(X2(1:L/2+1))*2/N;  

L1=3*N;                            
X3=fft(x,L1);                       
freq3=(0:L1/2)*fs/L1;                
X3_abs=abs(X3(1:L1/2+1))*2/N; 

subplot (411); plot(t,x); 
title('原始信号')
subplot(412); plot(freq1,X1_abs); 
ylim([0 1.5]);
title('补零前FFT谱图')
subplot(413); plot(freq2,X2_abs);
ylim([0 1.5]);
title('补2N零后FFT谱图')
subplot(414); plot(freq3,X3_abs);
ylim([0 1.5]);
title('补3N零后FFT谱图')

图1

 

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值