Matlab在信号处理中的基本应用———学习笔记
第0个实例——matlab基本操作(FFT频谱分析)
设计要求
1.用MATLAB产生正弦波及白噪声信号,并显示各自时域波形图
2.进行FFT变换,显示各自频谱图。
3.做出两种种信号的均方根图谱,功率图谱,以及对数方均根图谱。
4.用IFFT傅里叶反变换恢复信号,并显示时域波形图。
%*********************正弦波*********************
clc;
fs=60; %抽样频率100Hz
N=128; %采样点数
t=0:1/fs:(N-1)/fs; %时域长度=点数 x 采样间隔=点数/采样频率
f0=10; %信号1的频率10HZ
x=sin(2*pi*f0*t);
figure(1);subplot(231);plot(t,x);grid;
xlabel("时间/s");ylabel("幅度");title("时域波形");
%*********************进行FFT变换******************
y=fftshift(fft(x,N));
mag=abs(y);
f=(floor(-(N-1)/2):floor((N-1)/2))/(N-1)*fs;%乘以信号长度分之一(频率分辨率)
subplot(232);plot(f,mag);grid;axis([-50, 50, 0, 100]);
xlabel("频率/Hz");ylabel("幅值");title("幅频图");
求三种谱,先忽略
ifft恢复出原信号
fftshift 将零频率移到中点。 用法y=fftshift(fft(x,N));
ifftshift 就是撤消 fftshift 的结果。 用法y=fftshift(fft(x2,N));
%*********************用ifft恢复原始信号******************
x2=ifft(ifftshift(y),N);
t2=(0:length(x2)-1)/fs;
subplot(233);plot(t2,x2);grid;
xlabel("时间/s");ylabel("幅度");title("恢复时域波形");
%*********************恢复信号进行FFT变换******************
y=fftshift(fft(x2,N));
mag=abs(y);
f=(floor(-(N-1)/2):floor((N-1)/2))/(N-1)*fs;
%f=(0:length(y)-1)*fs/length(y);
subplot(234);plot(f,mag);grid;axis([-50, 50, 0, 100]);
xlabel("频率/Hz");ylabel("幅值");title("恢复信号的幅频图");