南京信息工程大学 实验(实习)报告
实验(实习)名称 数字信号处理 实验(实习)日期 得分 指导老师
学院 电信院 专业 电子信息工程 年级 2020 班次 姓名 学号 20208327
1.实验目的
- 掌握利用MATLAB求信号的希尔伯特变换;
- 掌握利用MATLAB进行信号的FFT运算,对其进行频谱分析;
- 掌握利用MATLAB对信号进行补零分析。
2.实验内容
(1)为一正弦信号,长度为25,求其希尔伯特变换;
(2)是两个正弦信号及其白噪声的叠加,试用FFT对其做频谱分析,并对其补零分析2N、3N长度的FFT效果。
- 实验步骤和实验结果
(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