基于FFT的信号频谱分析

设计要求
  1. 用MATLAB产生正弦波及白噪声信号,并显示各自时域波形图。
  2. 进行FFT变换,显示各自频谱图。
  3. 做出两种种信号的均方根图谱,功率图谱,以及对数方均根图谱。
  4. 用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

图像显示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐维康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值