Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1197056
  • 博文数量: 49
  • 博客积分: 10237
  • 博客等级: 上将
  • 技术积分: 2764
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-02 16:19
个人简介

满随天外云卷云舒 静观庭前花开花落

文章分类

全部博文(49)

文章存档

2013年(18)

2012年(9)

2011年(1)

2010年(5)

2009年(3)

2008年(13)

分类: IT职场

2013-06-28 18:25:30

 


1
.用Matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图
2
.进行FFT变换,显示各自频谱图,其中采样率,频率、数据长度自选
3
.做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱
4
.用IFFT傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图

源程序
%*************************************************************************%
%                              FFT
实践及频谱分析                          %
%*************************************************************************%
%*************************************************************************%
%***************1.
正弦波****************%
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;
%****************2.
矩形波****************%
fs=10;%
设定采样频率
t=-5:0.1:5;
x=rectpuls(t,2);
x=x(1:99);
figure(2);
subplot(231);
plot(t(1:99),x);%
作矩形波的时域波形
xlabel('t');
ylabel('y');
title('
矩形波时域波形');
grid;
%
进行FFT变换并做频谱图
y=fft(x);%
进行fft变换
mag=abs(y);%
求幅值
f=(0:length(y)-1)'*fs/length(y);%
进行对应的频率转换
figure(2);
subplot(232);
plot(f,mag);%
做频谱图
xlabel('
频率(Hz)');
ylabel('
幅值');
title('
矩形波幅频谱图');
grid;
%
求均方根谱
sq=abs(y);
figure(2);
subplot(233);
plot(f,sq);
xlabel('
频率(Hz)');
ylabel('
均方根谱');
title('
矩形波均方根谱');
grid;
%
求功率谱
power=sq.^2;
figure(2);
subplot(234);
plot(f,power);
xlabel('
频率(Hz)');
ylabel('
功率谱');
title('
矩形波功率谱');
grid;
%
求对数谱
ln=log(sq);
figure(2);
subplot(235);
plot(f,ln);
xlabel('
频率(Hz)');
ylabel('
对数谱');
title('
矩形波对数谱');
grid;
%
IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(2);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('
通过IFFT转换的矩形波波形');
grid;
%****************3.
白噪声****************%
fs=10;%
设定采样频率
t=-5:0.1:5;
x=zeros(1,100);
x(50)=100000;
figure(3);
subplot(231);
plot(t(1:100),x);%
作白噪声的时域波形
xlabel('t');
ylabel('y');
title('
白噪声时域波形');
grid;
%
进行FFT变换并做频谱图
y=fft(x);%
进行fft变换
mag=abs(y);%
求幅值
f=(0:length(y)-1)'*fs/length(y);%
进行对应的频率转换
figure(3);
subplot(232);
plot(f,mag);%
做频谱图
xlabel('
频率(Hz)');
ylabel('
幅值');
title('
白噪声幅频谱图');
grid;
%
求均方根谱
sq=abs(y);
figure(3);
subplot(233);
plot(f,sq);
xlabel('
频率(Hz)');
ylabel('
均方根谱');
title('
白噪声均方根谱');
grid;
%
求功率谱
power=sq.^2;
figure(3);
subplot(234);
plot(f,power);
xlabel('
频率(Hz)');
ylabel('
功率谱');
title('
白噪声功率谱');
grid;
%
求对数谱
ln=log(sq);
figure(3);
subplot(235);
plot(f,ln);
xlabel('
频率(Hz)');
ylabel('
对数谱');
title('
白噪声对数谱');
grid;
%
IFFT恢复原始信号
xifft=ifft(y);
magx=real(xifft);
ti=[0:length(xifft)-1]/fs;
figure(3);
subplot(236);
plot(ti,magx);
xlabel('t');
ylabel('y');
title('
通过IFFT转换的白噪声波形');
grid;

阅读(7976) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~