设计要求
- 用MATLAB产生正弦波及白噪声信号,并显示各自时域波形图。
- 进行FFT变换,显示各自频谱图。
- 做出两种种信号的均方根图谱,功率图谱,以及对数方均根图谱。
- 用IFFT傅里叶反变换恢复信号,并显示时域波形图
正弦波的信号频谱分析
正弦波源代码
clear all
clc
%*************************生成正弦信号************************% fs=100; %采样频率 N=128; %采样总点数 n=0:N-1; %各个采样点 f0=10; %正弦信号频率 t=n/fs; %1/fs是采样周期,采样了128此,相对应得采样时刻 x=sin(2*pi*f0*t); %生成正弦信号
%********************绘图*****************
figure
subplot(231);
plot(t,x);
xlabel('时间/s');
ylabel('幅值');
title('时域的波形');
grid on;
%**********FFT变换并画出频谱图******************
y=fft(x,N);%计算x的N点快速傅里叶变换
FuZhi=abs(y); %幅值计算
f=(0:length(y)-1)*fs/length(y); %将横坐标转化,显示为频率f= n*(fs/N)
subplot(232);
plot(f,FuZhi);
axis([0 100 0 80]);%设置当前坐标轴 x轴 和 y轴的限制范围
xlabel('频率/Hz');
ylabel('幅值');
title('FFT变化后幅频谱图');
grid on
%***********均方根谱**************
z=abs(y);
subplot(233);
plot(f,z);
xlabel('频率/Hz');
ylabel('幅值');
title('均方根谱');
grid on
%**********************功率谱*************
power=z.^2;
subplot(234);
plot(f,power);
xlabel('频率/Hz');
ylabel('幅值');
title('功率谱');
grid on
%***********对数谱******************
ln=log(z);
subplot(235);
plot(f,ln);
xlabel('频率/Hz');
ylabel('幅值');
title('对数谱');
grid on
%**********IFFT恢复出原始信号********************
xifft=ifft(y);
magx=real(xifft);
t1=(0:length(xifft)-1)/fs; %N/fs对应各个点的采样时间点
subplot(236);
plot(t1,magx);
xlabel('时间/t');
ylabel('幅值');
title('IFFT恢复出来的波形');
grid on
图像显示
白噪声的信号频谱分析
白噪声源代码
%*****************白噪声******************
fs=50; %采样频率
t=-5:0.1:5; %采样时间
x=rand(1,100); %产生1*100的随机矩阵
figure
subplot(231);
plot(t(1:100),x); %采用100个时间点
xlabel('时间/s');
ylabel('幅值');
title('时域波形');
grid on
%************FFT变化并做频谱图***********
y=fft(x);
FuZhi=abs(y);
f=(0:length(y)-1)*fs/length(y); %x坐标设为频率
subplot(232);
plot(f,FuZhi); xlabel('频率/Hz');
ylabel('幅值');
title('FFT变换的频域波形');
grid on
%************均方根谱************
z=abs(y);
subplot(233);
plot(f,z);
xlabel('频率/Hz');
ylabel('均方根谱');
title('均方根谱');
grid on
%**************功率谱**************
power=z.^2;
subplot(234);
plot(f,power);
xlabel('频率/Hz');
ylabel('功率谱');
title('功率谱');
grid on
%************对数谱**********
ln=log(z);
subplot(235);
plot(f,ln);
xlabel('频率/Hz');
ylabel('对数谱');
title('对数谱');
grid on
%***************IFFT恢复************
xifft=ifft(y);
mag=real(xifft);
ti=(0:length(xifft)-1)/fs;
subplot(236);
plot(ti,mag);
xlabel('时间/s');
ylabel('幅值');
title('IFFT恢复后的波形');
grid on