虫虫首页|资源下载|资源专辑|精品软件|心愿单
m 登录|注册

Matlab编程实现FFT变换及频谱分析的程序代码

源代码在线查看: matlab编程实现fft变换及频谱分析的程序代码.doc

软件大小: 3 K 下载次数: 2
上传用户: enterjqk
关键词: Matlab FFT 编程实现 变换
下载地址: 电信下载 网通下载 移动下载 联通下载 VIP VIP

相关代码

					Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用) 
					2007-10-08    sysop       点击: 436 
					 
					Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)
					 
					Matlab编程实现FFT变换及频谱分析的程序代码(喜欢进行电磁兼容仿真分析的朋友可以借用)
					
					内容
					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;
					
					 
					本文责任编辑: sysop 
					
					相关文章 
					? 请教:目前可有哪些用于EMC仿真的软件 - 08-18 10:01 am - 点击: 2718 
					 
					 
					
					 
					发表评论 查看评论 加入收藏 Email给朋友 打印本文 
					 
					 
					如果你想对该文章评分, 请先登陆, 如果你仍未注册,请点击注册链接注册成为本站会员.  平均得分 0, 共 0 人评分 
					          
					1 2 3 4 5 6 7 8 9 10  
					 
					 
					 
					 
					 
					 
					 
					
									

相关资源