Matlab实现FFT变换

下面的例子,先进行fourier transform,即双边谱

 程序代码

fs=100;%设定采样频率
N=128;
n=0:N-1;
t=n/fs;
f0=10;%
设定正弦信号频率
%
生成正弦信号
x=sin(2*pi*f0*t);
figure(1);
subplot(231);
plot(t,x);%
作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('
正弦信号y=2*pi*10t时域波形');
grid;
%
进行FFT变换并做频谱图

y=fft(x,N);%
进行fft变换
mag=abs(y);%
求幅值
f=(0:length(y)-1)'*fs/length(y);%
进行对应的频率转换
figure(1);
subplot(232);
plot(f,mag);%
做频谱图
axis([0,100,0,80]);
xlabel('
频率(Hz)');
ylabel('
幅值
');
title('
正弦信号y=2*pi*10t幅频谱图
N=128');
grid;
%
求均方根谱

sq=abs(y);
figure(1);
subplot(233);
plot(f,sq);
xlabel('
频率(Hz)');
ylabel('
均方根谱
');
title('
正弦信号y=2*pi*10t均方根谱
');
grid;
%
求功率谱

power=sq.^2;
figure(1);
subplot(234);
plot(f,power);
xlabel('
频率(Hz)');
ylabel('
功率谱
');
title('
正弦信号y=2*pi*10t功率谱
');
grid;
%
求对数谱

ln=log(sq);
figure(1);
subplot(235);
plot(f,ln);
xlabel('
频率(Hz)');
ylabel('
对数谱
');
title('
正弦信号y=2*pi*10t对数谱
');
grid;
%
IFFT恢复原始信号

xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(1);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('
通过IFFT转换的正弦信号波形');
grid;

 

下面进行单边谱计算:
 
程序代码

fs=100;%设定采样频率
N=128;
n=0:N-1;
t=n/fs;
f0=10;%
设定正弦信号频率
%
生成正弦信号
x=sin(2*pi*f0*t);
figure(1);
subplot(231);
plot(t,x);%
作正弦信号的时域波形
xlabel('t');
ylabel('y');
title('
正弦信号y=2*pi*10t时域波形');
grid;
%
进行FFT变换并做频谱图

y=fft(x,N);%
进行fft变换
mag=abs(y);%
求幅值
m=length(y);
f=(0:m/2-1)'*fs/m;%
进行对应的频率转换
figure(1);
subplot(232);
plot(f,mag(1:m/2));%
做频谱图
axis([0,100,0,80]);
xlabel('
频率(Hz)');
ylabel('
幅值
');
title('
正弦信号y=2*pi*10t幅频谱图
N=128');
grid;
%
求均方根谱

sq=abs(y);
figure(1);
subplot(233);
plot(f,sq(1:m/2));
xlabel('
频率(Hz)');
ylabel('
均方根谱
');
title('
正弦信号y=2*pi*10t均方根谱
');
grid;
%
求功率谱

power=sq.^2;
figure(1);
subplot(234);
plot(f,power(1:m/2));
xlabel('
频率(Hz)');
ylabel('
功率谱
');
title('
正弦信号y=2*pi*10t功率谱
');
grid;
%
求对数谱

ln=log(sq);
figure(1);
subplot(235);
plot(f,ln(1:m/2));
xlabel('
频率(Hz)');
ylabel('
对数谱
');
title('
正弦信号y=2*pi*10t对数谱
');
grid;
%
IFFT恢复原始信号

xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(1);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('
通过IFFT转换的正弦信号波形');
grid;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值