当前位置:文档之家› 连续时间信号的傅利叶变换及MATLAB实现

连续时间信号的傅利叶变换及MATLAB实现

连续时间信号的傅利叶变换及MATLAB实现
连续时间信号的傅利叶变换及MATLAB实现

课程设计任务书

学生姓名:专业班级:电子科学与技术0803 班

指导教师:工作单位:信息工程学院

题目:

连续时间信号的傅利叶变换及MATLAB实现

初始条件:

MATLAB软件,微机

要求完成的主要任务:

利用MATLAB强大的图形处理功能,符号运算功能和数值计算功能,实现连续时间非周期信号频域分析的仿真波形;

1、用MATLAB实现典型非周期信号的频域分析;

2、用MATLAB实现信号的幅度调制;

3、用MATLAB实现信号傅立叶变换性质的仿真波形;

4、写出课程设计报告。

时间安排:

学习MATLAB语言的概况第1天

学习MATLAB语言的基本知识第2、3天

学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天

课程设计第6-9天

答辩第10天

指导教师签名:年月日

系主任(或责任教师)签名:年月日

目录

摘要....................................................................... I Abstract ................................................................... II 1绪论 (1)

2 用MATLAB实现典型非周期信号的频域分析 (2)

2.1指数信号时域波形图、频域图 (2)

2.2偶双边指数信号时域波形图、频域图 (2)

2.3奇双边指数信号时域波形图、频域图 (3)

2.4直流信号时域波形图、频域图 (4)

2.5符号函数信号时域波形图、频域图 (4)

2.6 单位阶跃信号时域波形图、频域图 (5)

2.7 单位冲激信号时域波形图、频域图 (5)

2.8 门函数信号时域波形图、频域图 (6)

3用MATLAB实现信号的幅度调制 (7)

4用MATLAB实现信号傅立叶变换性质的仿真波形 (11)

4.1尺度变换特性 (11)

4.2时移特性 (12)

4.3频移特性 (15)

4.4时域卷积定理 (16)

4.5对称性 (17)

4.6 微分特性 (18)

结束语 (21)

参考文献 (22)

附录 (23)

摘要

傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。最初傅里叶分析是作为热过程的解析分析的工具被提出的。

连续时间信号与系统的时域分析是指直接在连续时间变量域内对信号和系统进行分析。时域分析法具有直观和物理概念清晰等优点,特别是随着计算机的普及和各种算法的优化改进,时域分析法得到了越来越广泛的应用。

关键词:傅立叶变换,连续信号处理,时域波形,频域波形

Abstract

Fourier transform to meet certain conditions can be expressed as a function of trigonometric functions (sine and / or cosine functions) or a linear combination of their points. In different fields of study, Fourier transform has many different variations, such as the continuous Fourier transform and discrete Fourier transform. Fourier analysis is the first analytical process as a thermal analysis tool is proposed.

Continuous-time signals and systems refers to the time-domain analysis of variables directly in the continuous-time domain signal and system analysis. Time domain analysis has a clear concept of visual and physical advantages, especially with the proliferation of computers and various algorithms to improve optimization, time domain analysis has been more widely used. Keywords: Fourier transform, continuous signal processing, time domain waveform, frequency domain waveform

1 绪论

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

本次课程设计介绍了用MATLAB实现典型非周期信号的频谱分析,用MATLAB实现信号的幅度调制以及用MATLAB实现信号傅里叶变换性质的仿真波形。

2 用MATLAB 实现典型非周期信号的频域分析

2.1指数信号时域波形图、频域图

指数信号的时域表达式为

()()t f t e t αε-=,其时域波形图和频谱图如图2.1所示

其在matlab 中用f=exp(-at)来实现

-5

05

t

exp(-abs(t))

时域波形

-2

02

w

2/abs(1+w 2)

幅度频谱

图2.1 指数信号波形谱图

2.2偶双边指数信号时域波形图、频域图

偶双边指数信号时域表达式为||

()(0)a t f t e

a -=>

对其进行傅立叶变换为:

()()j t

at j t

at j t F f t e

dt e e

dt e e dt

ωωωω∞

-----∞

-∞

=

=+?

??

()()2

2

112a j t

a j t a

e

dt e dt a j a j a ωωωωω∞

--+-+-∞

=

+=

+=-++??

t 偶双边指数信

-6

-4

-2

02

4

6

w 幅度

w

相位谱

图2.2 偶双边指数信号时域及频域图

2.3奇双边指数信号时域波形图、频域图

奇双边指数信号时域表达式为:

||

()sgn()(0)a t f t e t a -=>,傅立叶变换为:

022

2()at j t

at j t F e e

dt e e dt j

a ωωω

ωω∞

----∞

=-+=-+??

其时域波形与频域波形如下图所示:

t

奇双边指数信号

ω

奇双边指数信号频谱|F (jw )|

图2.3 奇双边指数信号时域与频域波形

2.4直流信号时域波形图、频域图

直流信号f(t)=A

根据指标要求,画出频率采样序列的图形

图2.4 直流信号时域和频域波形

2.5符号函数信号时域波形图、频域图

符号信号的时域表达式为:,对其进行傅立叶变换为:

通过matlab实现波形如图2.5所示:

符号函数

-3-2-10123

t

符号函数信号频谱|F(jw)|

图2.5 符号函数信号时域频域波形

2.6 单位阶跃信号时域波形图、频域图

阶跃信号可以看作是幅度为1/2的直流信号与幅度为1/2的符号信号之和,即

11

()sgn()22u t t =

+

显然它不满足绝对可积条件,不能直接求其FT,但可用近似的方法来求。

其傅里叶变换为:

1

()()F j j ωπδωω=+

图2.6 单位阶跃信号时域和频域波形

2.7 单位冲激信号时域波形图、频域图

其时域表达式:00()0()1t t t t dt δδ∞∞?≠?=??

∞=??

??=???

傅里叶变换式为 (){()}1F j

F t ωδ==

-2

-1.5-1-0.5

00.51 1.52

t

f (t )

脉宽为0.01的脉冲信号

w

F (w )

其F (w )频谱

2.8 门函数信号时域波形图、频域图

-2

-1.5

-1

-0.5

00.51

1.5

2

t

f (t )

f(t)=u(t+1)-u(t-1)

-40

-30-20-10

010203040

w

F (w )

f(t)的付氏变换F(w)

3 用MATLAB实现信号的幅度调制

设信号f (t) 的频谱为F( j w) ,现将f (t) 乘以载波信号cos (w0t),得到高频的已调信号y(t ) ,即:y(t ) = f (t) cos (w0t) ,f (t) 称为调制信号。

从频域上看,已调制信号y(t ) 的频谱为原调制信号f (t) 的频谱搬移到±w 处,幅度降为原F( jw) 的1/2,即

上式即为调制定理,也是傅里叶变换性质中“频移特性”的一种特别情形。

注意:这里采用的调制方法为抑制载波方式,即y(t ) 的频谱中不含有cos( wot) 的频率分量。

MATLAB 提供了专门的函数modulate()用于实现信号的调制。调用格式为:

y=modulate(x,Fc,Fs,'method')

[y,t]=modulate(x,Fc,Fs)

其中,x 为被调信号,Fc 为载波频率,Fs 为信号x 的采样频率,method 为所采用的调制方式,若采用幅度调制、双边带调制、抑制载波调制,则'method'为'am'或'amdsd-sc'。

其执行算法为

y=x*cos(2*pi*Fc*t)

其中y 为已调制信号,t 为函数计算时间间隔向量。

下面举例说明如何调用函数modulate()来实现信号的调制。

例1:设信号f(t)=sin(100πt),载波y(t)为频率为400Hz 的余弦信号。试用MATLAB 实现调幅信号y(t ) ,并观察f (t) 的频谱和y(t ) 的频谱,以及两者在频域上的关系。

解:在下面的MATLAB 的实现的程序中,为了观察f (t) 及y(t ) 的频谱,在这里介绍一个MATLAB 的“信号处理工具箱函数”中的估计信号的功率谱密度函数psd(),其格式是:[Px,f]=psd(x,Nfft,Fs,window,noverlap,dflag)

其中,x 是被调制信号(即本例中的f (t) ),Nfft 指定快速付氏变换FFT 的长度,Fs 为对信号x 的采样频率。后面三个参数的意义涉及到信号处理的更深的知识,在此暂不介绍。

用MATLAB 完成本例的程序如下:

Fs=1000; %被调信号x的采样频率

Fc=400; %载波信号的载波频率

N=1000; %FFT的长度

n=0:N-2;

t=n/Fs;

x=sin(2*pi*50*t); %被调信号

subplot(221)

plot(t,x);

xlabel('t(s)');

ylabel('x');

title('被调信号');

axis([0 0.1 -1 1])

Nfft=1024;

window=hamming(512);

noverlap=256;

dflag='none';

[Pxx,f]=psd(x,Nfft,Fs,window,noverlap,dflag); subplot(222) plot(f,Pxx) xlabel('f(Hz)');

ylabel('功率谱(X)');

title('被调信号的功率谱') grid

y=modulate(x,Fc,Fs,'am'); %已调信号 subplot(223) plot(t,y) xlabel('t(s)'); ylabel('y');

axis([0 0.1 -1 1]) title('已调信号')

[Pxx,f]=psd(y,1024,Fs,window,noverlap,dflag); subplot(224) plot(f,Pxx) xlabel('f(Hz)');

ylabel('功率谱(Y)');

title('已调信号的功率谱'); grid

上述程序的运行结果如图3.1 所示,其中左边上下两图为f (t ) 及y (t ) 信号,即时域波形,右边上下两图分别为对应f (t ) 及y (t ) 的功率谱。

由图可见, f (t ) 的功率频谱处在频域的频率f=400HZ 为中心的两侧、偏移值为50HZ 的双边带。显然,上述结果与信号与系统分析的理论结果完全一致。

0.050.1

t(s)x

被调信号

0200

400600

50

100

f(Hz)

功率谱(X )

被调信号的功率谱

0.050.1

t(s)

y

已调信号

0200

400600

10

20

30f(Hz)

功率谱(Y )

已调信号的功率谱

图3.1 被调信号、已调信号及其谱线

需要指出的是,一个信号的频谱与功率谱在数值上及定义上是有差别的,但两者的联系也是很密切的,其关系为:

其中T 为信号的周期。

此外,也可以直接生成调制信号,并用MATLAB 编程求f1(t)的频谱。用下例说明。

例2设 ,试用MATLAB 画出f (t) 、f1(t)的时域波形及其频谱,并观察傅里叶变换的频移特性。

解:实现该过程的MATLAB 命令程序如下:

R=0.005;t=-1.2:R:1.2;

f=Heaviside(t+1)-Heaviside(t-1);

f1=f.*cos(10*pi*t); %已调信号

subplot(221)

plot(t,f)

xlabel('t');

ylabel('f(t)');

subplot(222);

plot(t,f1);

xlabel('t');

ylabel('f1(t)=f(t)*cos(10*pi*t)');

W1=40;

N=1000;

k=-N:N;

W=k*W1/.N;

F=f.*exp(-j*t'*W)*R; %求F(jw)

F=real(F);

F1=f1.*exp(-j*t'*W)*R; %求F1(jw)

F1=real(F1);

subplot(223);

plot(W,F);

xlabel('w');

ylabel('F(jw)');

subplot(224);

plot(W,F1);

xlabel('w');

ylabel('F1(jw)');

程序运行结果如图所示。

由图3.2可见,f1( t) 的频谱F1( jw)即是将f (t) 的频谱F( jw) 搬移到±10π处,且幅度为F( jw) 的幅度的一半。

-2-1

01

2

t

f (t )

-2-1

012

t

f 1(t )=f (t )*c o s (10*p i *t )

-40

-20

020

40

w

F (j w )

-40

-20

020

40

w

F 1(j w )

图3.2 原信号f (t ) 、调制信号f 1( t ) 的波形及其频谱F ( jw ) 、F 1( jw )

4 用MATLAB 实现信号傅立叶变换性质的仿真波形

4.1尺度变换特性

若)()(ωj F t f ?,则傅立叶变换的尺度变换特性为:

)(1)(a

j F a at f ω

?

(4-1) 下面举例说明傅立叶变换的尺度特性。

例3:设)1()1()()(2--+==t u t u t G t f ,用MATLAB 求)12()12()()(1--+==t u t u t G t y 的频谱)(ωj Y ,并与)(t f 的频谱)(ωj F 进行比较。 解:实现该过程的MATLAB 程序如下:

R=0.02;t=-2:R:2;

f=Heaviside(2*t+1)-Heaviside(2*t-1) W1=2*pi*5;

N=500;k=0:N;W=k*W1/N; F=f*exp(-j*t'*W)*R; F=real(F);

W=[-fliplr(W),W(2:501)]; F=[fliplr(F),F(2:501)]; subplot(2,1,1);plot(t,f); xlabel('t');ylabel('f(t)'); title('f(t)=u(t+1)-u(t-1)'); subplot(2,1,2);plot(W,F); xlabel('w');ylabel('F(w)'); title('f(2t)的付氏变换F(w)');

图4.1.1 f(2t)的频谱图

将程序中2*t 改为t 并运行即可得一下频谱图:

图4.1.2 f(t)的频谱图

4.2时移特性

若)()(ωj F t f ?,则傅立叶变换的时移特性为:

00)()(t j e j F t t f ωω±?± (4-2)

下面举例说明傅立叶变换的时移特性。

例4:设)(21)(2t u e t f t -=,)3.0(2

1

)()3.0(2-=--t u e t y t 试用MATLAB 绘出)(t f ,)(t y 及其频

谱(幅度谱和相位谱),并对二者频谱进行比较。 解:求解)(t f 程序命令如下:

r=0.02;

t=-5:r:5;

N=200; W=2*pi*1; k=-N:N; w=k*W/N;

f1=1/2*exp(-2*t).*Heaviside(t); F=r*f1*exp(-j*t'*w); F1=abs(F); P1=angle(F); subplot(311); plot(t,f1); grid;

xlabel('t'); ylabel('f(t)'); title('f(t)'); subplot(312); plot(w,F1); xlabel('w'); grid;

ylabel('F(jw)'); subplot(313);

plot(w,P1*180/pi); grid;

xlabel('w'); ylabel('P(度)');

运行结果如图4.2所示。

将求解)(t f 频谱的程序进行适当修改,即可得到求解)(t y 频谱的程序,即将t=-5:r:5修改为t=-2:r:2;f1修改为f1=1/2*exp(-2*(t-0.3)).*Heaviside(t-0.3);将ylabel(‘f(t)’)修改为ylabel(‘y(t)’);将title(‘f(t)’) 修改为title(‘y(t)’)。修改后程序运行结果如图4.3所示。

图4.2 f(t)的频谱图

图4.3 y(t)=f(t-0.3)的频谱图

4.3频移特性

若)()(ωj F t f ?,则傅立叶变换的频移特性为:)]([)(00ωωω j F e t f j ?± 下面举例说明傅立叶变换的频移特性。

例5:设)1()1()(--+=t u t u t f ,试用MATLAB 绘出t j e t f t f 201)()(-=及t j e t f t f 202)()(=的频谱)(1ωj F 和)(2ωj F ,并与)(t f 的频谱)(ωj F 进行比较。 解: R=0.02;t=-2:R:2;

f=Heaviside(t+1)-Heaviside(t-1); f1=f.*exp(-j*20*t);

f2=f.*exp(j*20*t); W1=2*pi*5;

N=500;k=-N:N;W=k*W1/N; F1=f1*exp(-j*t'*W)*R; F2=f2*exp(-j*t'*W)*R; F1=real(F1); F2=real(F2); subplot(121); plot(W,F1); xlabel('w');

ylabel('F1(jw)');

title('F(w)左移到w=20处的频谱F1(jw)'); subplot(122); plot(W,F2); xlabel('w');

ylabel('F2(jw)');

title('F(w)右移到w=20处的频谱F2(jw)'); 运行结果如下图所示:

4.4时域卷积定理

若)()(),()(2211ωωj F t f j F t f →?,则:

)()()(*)(2121ωωj F j F t f t f ? (4-3)

例6:设)1()1()(--+=t u t u t f ,)(*)()(t f t f t y =,试用MATLAB 绘出)(t f ,)(t y ,)(ωj F ,)()(ωωj F j F ?及)(ωj Y ,验证式(4-3)。 解:MATLAB 程序如下:

R=0.05;t=-2:R:2;

f=Heaviside(t+1)-Heaviside(t-1); subplot(321) plot(t,f) xlabel('t'); ylabel('f(t)'); y=R*conv(f,f); n=-4:R:4; subplot(322); plot(n,y); xlabel('t');

ylabel('y(t)=f(t)*f(t)'); axis([-3 3 -1 3]); W1=2*pi*5; N=200; k=-N:N; W=k*W1/N;

F=f*exp(-j*t'*W)*R; F=real(F);

Y=y*exp(-j*n'*W)*R; Y=real(Y); F1=F.*F subplot(323); plot(W,F); xlabel('w'); ylabel('F(jw)'); subplot(324); plot(W,F1); xlabel('w');

ylabel('F(jw).F(jw)'); axis([-20 20 0 4]); subplot(325); plot(W,Y);

按频率抽取基2-快速傅里叶逆变换算法_MATLAB代码

function x=MyIFFT_FB(y) %MyIFFT_TB:My Inverse Fast Fourier Transform Time Based %按频率抽取基2-傅里叶逆变换算法 %input: % y -- 傅里叶正变换结果,1*N的向量 %output: % x -- 逆变换结果,1*N的向量 %参考文献: % https://www.doczj.com/doc/464203384.html,/view/fea1e985b9d528ea81c779ee.html N=length(y); x=conj(y); %求共轭 x=MyFFT_FB(x);%求FFT x=conj(x);%求共轭 x=x./N;%除以N end %% 内嵌函数====================================================== function y=MyFFT_FB(x,n) %MYFFT_TB:My Fast Fourier Transform Frequency Based %按频率抽取基2-fft算法 %input: % x -- 输入的一维样本 % n -- 变换长度,缺省时n=length(x) 当n小于x数据长度时,x数据被截断到第n个数据% 当n大于时,x数据在尾部补0直到x 含n个数据 %output: % y -- 1*n的向量,快速傅里叶变换结果 %variable define: % N -- 一维数据x的长度 % xtem -- 临时储存x数据用 % m,M -- 对N进行分解N=2^m*M,M为不能被2整除的整数 % two_m -- 2^m % adr -- 变址,1*N的向量 % l -- 当前蝶形运算的级数 % W -- 长为N/2的向量,记录W(0,N),W(1,N),...W(N/2-1,N) % d -- 蝶形运算两点间距离 % t -- 第l级蝶形运算含有的奇偶数组的个数 % mul -- 标量,乘数 % ind1,ind2 -- 标量,下标 % tem -- 标量,用于临时储存 %参考文献: % https://www.doczj.com/doc/464203384.html,/view/fea1e985b9d528ea81c779ee.html %% 输入参数个数检查

短时傅里叶变换matlab程序

function [Spec,Freq]=STFT(Sig,nLevel,WinLen,SampFreq) %计算离散信号的短时傅里叶变换; % Sig 待分析信号; % nLevel 频率轴长度划分(默认值512); % WinLen 汉宁窗长度(默认值64); % SampFreq 信号的采样频率(默认值1); if (nargin <1), error('At least one parameter required!'); end; Sig=real(Sig); SigLen=length(Sig); if (nargin <4), SampFreq=1; end if (nargin <3), WinLen=64; end if (nargin <2), nLevel=513; end nLevel=ceil(nLevel/2)*2+1; WinLen=ceil(WinLen/2)*2+1; WinFun=exp(-6*linspace(-1,1,WinLen).^2); WinFun=WinFun/norm(WinFun); Lh=(WinLen-1)/2; Ln=(nLevel-1)/2; Spec=zeros(nLevel,SigLen); wait=waitbar(0,'Under calculation,please wait...'); for iLoop=1:SigLen, waitbar(iLoop/SigLen,wait); iLeft=min([iLoop-1,Lh,Ln]); iRight=min([SigLen-iLoop,Lh,Ln]); iIndex=-iLeft:iRight; iIndex1=iIndex+iLoop; iIndex2=iIndex+Lh+1; Index=iIndex+Ln+1; Spec(Index,iLoop)=Sig(iIndex1).*conj(WinFun(iIndex2)); end; close(wait); Spec=fft(Spec); Spec=abs(Spec(1:(end-1)/2,:));

Matlab傅里叶变换傅里叶逆变换-FFT-IFFT

Matlab傅里叶变换傅里叶逆变换 %% 信号经过傅里叶变换然后进行傅里叶逆变换后信号的变化 clear all;clc; %------Author&Date------ %Author: %Date: 2013/07/31 %========================================================================== Fs=8e3; %采样率 t=0:1/Fs:1; %采样点 len=length(t); %采样长度 f1=10; %频率1 f2=100; %频率2 f3=1000; %频率3 A1=1; %幅度1 A2=0.8; %幅度2 A3=0.3; %幅度3 MaxS=A1+A2+A3; %信号幅度的最大值 signal=A1*sin(2*pi*f1*t)+A2*sin(2*pi*f2*t)+A3*sin(2*pi*f3*t); X=fft(signal,len); %傅里叶变换 magX=abs(X); %信号的幅度 angX=angle(X); %信号的相位 Y=magX.*exp(1i*angX); %信号的频域表示 y=ifft(Y,len); %信号进行傅里叶逆变换 y=real(y); er=signal-y; %原始信号和还原信号的误差 subplot(311);plot(t,signal);axis([0 1 -MaxS MaxS]);xlabel('时间');ylabel('振幅');title('原始信号'); subplot(312);plot(t,y);axis([0 1 -MaxS MaxS]);xlabel('时间');ylabel('振幅');title('还原信号'); subplot(313);plot(t,er);xlabel('时间');ylabel('振幅');title('误差'); % End Script

傅里叶变换matlab代码

%傅里叶变换 clc;clear all;close all; tic Fs=128;%采样频率,频谱图的最大频率 T=1/Fs;%采样时间,原始信号的时间间隔 L=256;%原始信号的长度,即原始离散信号的点数 t=(0:L-1)*T;%原始信号的时间取值范围 x=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180)+3*cos(2*pi*30*t-90*pi/ 180); z=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180); z1=6*cos(2*pi*30*t-90*pi/180); z1(1:L/2)=0; z=z+z1; y=x;%+randn(size(t)); figure; plot(t,y) title('含噪信号') xlabel('时间(s)') hold on plot(t,z,'r--') N=2^nextpow2(L);%N为使2^N>=L的最小幂 Y=fft(y,N)/N*2; Z=fft(z,N)/N*2;%快速傅里叶变换之后每个点的幅值是直流信号以外的原始信号幅值的N/2倍(是直流信号的N倍) f=Fs/N*(0:N-1);%频谱图的频率取值范围 A=abs(Y);%幅值 A1=abs(Z); B=A; %让很小的数置零. B1=A1; A(A<10^-10)=0; % A1(A1<10^-10)=0; P=angle(Y).*A./B; P1=angle(Z).*A1./B1; P=unwrap(P,pi);%初相位值,以除去了振幅为零时的相位值 P1=unwrap(P1,pi); figure subplot(211) plot(f(1:N/2),A(1:N/2))%函数ffs返回值的数据结构具有对称性,因此只取前一半 hold on plot(f(1:N/2),A1(1:N/2),'r--') title('幅值频谱')

matlab-离散信号傅里叶变换

1.请用MATLAB编写程序,实现任意两个有限长度序列的卷积和。要求用图 形显示两个序列及卷积结果。 解:y(n)=∑x(i)h(n-i) 假设x(n)={1,2,3,4,5}; h(n)={3,6,7,2,1,6}; y(n)=x(n)*h(n) 验证:y[n]=[1,12,28,46,65,72,58,32,29,30] 【程序】 N=5 M=6 L=N+M-1 x=[1,2,3,4,5] h=[3,6,7,2,1,6] y=conv(x,h) nx=0:N-1 nh=0:M-1 ny=0:L-1 subplot(131);stem(nx,x,'*b');xlabel('n');ylabel('x(n)');grid on subplot(132);stem(nh,h,'*b');xlabel('n');ylabel('h(h)');grid on subplot(133);stem(ny,y,'*r');xlabel('n');ylabel('y(h)');grid on 【运行结果】

2.已知两个序列x[n]=cos(n*pi/2), y[n]=e j*pi*n/4x[n],请编写程序绘制 X(e jw)和Y(e jw)和幅度和相角,说明它们的频移关系。 –提示:用abs函数求幅度,用angle求相角。 【程序】 n=0:15; x=cos(n*pi/2); y=exp(j*pi*n/4).*x; X=fft(x); Y=fft(y); magX=abs(X); angX=angle(X); magY=abs(Y); angY=angle(Y); subplot(221);stem(n,magX,'*r');xlabel('频率');ylabel('幅度');grid on; subplot(222);stem(n,angX,'*b');xlabel('频率');ylabel('相位');grid on; subplot(223);stem(n,magY,'*r');xlabel('频率');ylabel('幅度');grid on; subplot(224);stem(n,angY,'*b');xlabel('频率');ylabel('相位');grid on;

MATLAB数字图像处理几何变换傅里叶变换

Matlab数字图像处理实验指导 实验目的: 通过实验,深入理解和掌握图像处理的基本技术,提高动手实践能力。 实验环境: Matlab变成 实验一图像的几何变换 实验内容:设计一个程序,能够实现图像的各种几何变换。 实验要求:读入图像,打开图像,实现图像的平移变换、比例缩放、转置变换、镜像变换、旋转变换等操作。 实验原理: 图像几何变换又称为图像空间变换,它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。学习几何变换的关键就是要确定这种空间映射关系,以及映射过程中的变化参数。 几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排。一个几何变换需要两部分运算:首先是空间变换所需的运算,如平移、镜像和旋转等,需要用它来表示输出图像与输入图像之间的(像素)映射关系;此外,还需要使用灰度插值算法,因为按照这种变换关系进行计算,输出图像的像素可能被映射到输入图像的非整数坐标上。 设原图像f(x0,y0)经过几何变换产生的目标图像为g(x1,y1),则该空间变换(映射)关系可表示为: x1=s(x0,y0) y1=t(x0,y0) 其中,s(x0,y0)和t(x0,y0)为由f(x0,y0)到g(x1,y1)的坐标换变换函数。 一、图像平移 图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动。

二、图像镜像 镜像变换又分为水平镜像和垂直镜像。水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行对换;而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中心轴进行对换。 三、图像转置 图像转置是将图像像素的x坐标和y坐标呼唤。图像的大小会随之改变——高度和宽度将呼唤。

【免费下载】matlab实现傅里叶变换

一、傅立叶变化的原理; (1)原理 正交级数的展开是其理论基础!将一个在时域收敛的函数展开成一系列不同频率谐波的叠加,从而达到解决周期函数问题的目的。在此基础上进行推广,从而可以对一个非周期函数进行时频变换。 从分析的角度看,他是用简单的函数去逼近(或代替)复杂函数,从几何的角度看,它是以一族正交函数为基向量,将函数空间进行正交分解,相应的系数即为坐标。从变幻的角度的看,他建立了周期函数与序列之间的对应关系;而从物理意义上看,他将信号分解为一些列的简谐波的复合,从而建立了频谱理论。 当然Fourier积分建立在傅氏积分基础上,一个函数除了要满足狄氏条件外, 一般来说还要在积分域上绝对可积,才有古典意义下的傅氏变换。引入衰减因子e^(-st),从而有了Laplace变换。(好像走远了)。 (2)计算方法 连续傅里叶变换将平方可积的函数f(t)表示成复指数函数的积分或级数形式。 这是将频率域的函数F(ω)表示为时间域的函数f(t)的积分形式。 为 连续傅里叶变换的逆变换 (inverse Fourier transform) 即将时间域的函数f(t)表示为频率域的函数F(ω)的积分。 一般可称函数f(t)为原函数,而称函数F(ω)为傅里叶变换的像函数,原函数和像函数构成一个傅里叶变换对(transform pair)。 二、傅立叶变换的应用; DFT在诸多多领域中有着重要应用,下面仅是颉取的几个例子。需要指出 的是,所有DFT的实际应用都依赖于计算离散傅里叶变换及其逆变换的快速算

法,即快速傅里叶变换(快速傅里叶变换(即FFT )是计算离散傅里叶变换及其逆变换的快速算法。)。(1)、频谱分析DFT 是连续傅里叶变换的近似。因此可以对连续信号x(t)均匀采样并截断以得到有限长的离散序列,对这一序列作离散傅里叶变换,可以分析连续信号x(t)频谱的性质。前面还提到DFT 应用于频谱分析需要注意的两个问题:即采样可能导致信号混叠和截断信号引起的频谱泄漏。可以通过选择适当的采样频率(见奈奎斯特频率)消减混叠。选择适当的序列长度并加窗可以抑制频谱泄漏。(2)、数据压缩由于人类感官的分辨能力存在极限,因此很多有损压缩算法利用这一点将语音、音频、图像、视频等信号的高频部分除去。高频信号对应于信号的细节,滤除高频信号可以在人类感官可以接受的范围内获得很高的压缩比。这一去除高频分量的处理就是通过离散傅里叶变换完成的。将时域或空域的信号转换到频域,仅储存或传输较低频率上的系数,在解压缩端采用逆变换即可重建信号。(3)、OFDM OFDM (正交频分复用)在宽带无线通信中有重要的应用。这种技术将带宽为N 个等间隔的子载波,可以证明这些子载波相互正交。尤其重要的是,OFDM 调制可以由IDFT 实现,而解调可以由DFT 实现。OFDM 还利用DFT 的移位性质,在每个帧头部加上循环前缀(Cyclic Prefix ),使得只要信道延时小于循环前缀的长度,就能消除信道延时对传输的影响。三、傅里叶变换的本质; 傅里叶变换的公式为dt e t f F t j ?+∞∞--=ωω)()(可以把傅里叶变换也成另外一种形式: t j e t f F ωπ ω),(21)(=可以看出,傅里叶变换的本质是内积,三角函数是完备的正交函数集,不同频率的三 角函数的之间的内积为0,只有频率相等的三角函数做内积时,才不为0。)(2,21)(2121Ω-Ω==?Ω-ΩΩΩπδdt e e e t j t j t j

用Matlab对信号进行傅里叶变换实例

目录 用Matlab 对信号进行傅里叶变换 (2) Matlab 的傅里叶变换实例 (5) Matlab 方波傅立叶变换画出频谱图 (7)

用 Matlab 对信号进行傅里叶变换 1. 离散序列的傅里叶变换 DTFT(Discrete Time Fourier Transform) 代码: %原离散信号有 8 点 %原信号是 1行 8列的矩阵 %构建原始信号,为指数信号 %频域共-800 +800 的长度(本应是无穷, 高 %求 dtft 变换,采用原始定义的方法,对复指 7 subplot(311) 8 stem(n,xn); 9 title('原始信号(指数信号 )'); 10 subplot(312); 11 plot(w/pi,abs(X)); 12 title('DTFT 变换 ') 结果: 分析:可见,离散序列的 dtft 变换是周期的,这也符合 Nyquist 采样 定理的描述, 连续时间信号经周期采样之后, 所得的离散信号的频谱 是原连续信号频谱的周期延拓。 2. 离散傅里叶变换 1 N=8; 2 n=[0:1:N-1] 3 xn=0.5.^n; 4 5 w=[-800:1:800]*4*pi/800; 频分量很少,故省去) 6 X=xn*exp(-j*(n'*w)); 数分 量求和而得

与 1 中 DTFT 不一样的是, DTFT 的求和区间是整个频域,这对 N=8; % 原离散信号有 8 点 n=[0:1:N-1] %原信号是 1行 8列的矩阵 xn=0.5.^n; %构建原始信号,为指数信号 w=[-8:1:8]*4*pi/8; %频域共 -800 +800 的长度(本应是无穷, 高频分量很少, 故省去) X=xn*exp(-j*(n'*w)); %求 dtft 变换,采用原始定义的方法,对复指数分量求和而得 subplot(311) stem(n,xn); w1=[-4:1:4]*4*pi/4; X1=xn*exp(-j*(n'*w1)); title(' 原始信号 (指数信号 )'); subplot(312); stem(w/pi,abs(X)); title(' 原信号的 16 点 DFT 变换 ') subplot(313) stem(w1/pi,abs(X1)); title(' 原信号的 8 点 DFT 变换 ') 计算机的计算来说是不可以实现的, DFT 就是序列的有限傅里叶变换。 实际上, 1 中代码也只是对频域的 -800 +800 中间的 1601 结果图: 分析: DFT 只是 DTFT 的现实版本,因为 DTFT 要求求和区间无穷, 而 DFT 只在有限点内求和。 3. 快速傅里叶变换 FFT ( Fast Fourier Transform ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

傅里叶变换的应用,matlab程序,C语言程序

1 利用FFT 计算连续时间信号的傅里叶变换 设()x t 是连续时间信号,并假设0t <时()0x t =,则其傅里叶变换由下式给出 0()()i t X x t e dt ωω∞ -=? 令Γ是一个固定的正实数,N 是一个固定的正整数。当,0,1,2,,1k k N ω=Γ=-L 时,利用FFT 算法可计算()X ω。 已知一个固定的时间间隔T ,选择T 足够小,使得每一个T 秒的间隔(1)nT t n T ≤<+内,()x t 的变化很小,则式中积分可近似为 (1)0 ()()()n T iwt nT n X e dt x nT ω∞+-==∑? (1)01[ ]()i t t n T t nT n e x nT i ωω ∞-=+==-=∑ 0 1()i T i nT n e e x nT i ωωω-∞-=-=∑ (27) 假设N 足够大,对于所有n N ≥的整数,幅值()x nT 很小,则式(27)变为 1 01()()i T N i nT n e X e x nT i ωωωω---=-=∑ (28) 当2/k NT ωπ=时,式(28)两边的值为 2/2/12/0211()()[]2/2/i k N i k N N i nk N n k e e X e x nT X k NT i k NT i k NT ππππππ----=--==∑ (29) 其中[]X k 代表抽样信号[]()x n x nT =的N 点DFT 。最后令2/NT πΓ=,则上式变为 2/1()[]0,1,2,,12/i k N e X k X k k N i k NT ππ--Γ==-L (30) 首先用FFT 算法求出[]X k ,然后可用上式求出0,1,2,,1k N =-L 时的()X k Γ。 应该强调的是,式(28)只是一个近似表示,计算得到的()X ω只是一个近似值。通过取更小的抽样间隔T ,或者增加点数N ,可以得到更精确的值。如果B ω>时,幅度谱()X ω很小,对应于奈奎斯特抽样频率2s B ω=,抽样间隔T 选择/B π比较合适。如果已知信号只在时间区间10t t ≤≤内存在,可以通过对1nT t >时的抽样信号[]()x n x nT =补零,使N 足够大。 例1 利用FFT 计算傅里叶变换

利用MATLAB编写FFT快速傅里叶变换

一、实验目的 1.利用MATLAB 编写FFT 快速傅里叶变换。 2.比较编写的myfft 程序运算结果与MATLAB 中的FFT 的有无误差。 二、实验条件 PC 机,MATLAB7.0 三、实验原理 1. FFT (快速傅里叶变换)原理: 将一个N 点的计算分解为两个N/2点的计算,每个N/2点的计算再进一步分解为N/4点的计算,以此类推。根据DFT 的定义式,将信号x[n]根据采样号n 分解为偶采样点和奇采样点。设偶采样序列为y[n]=x[2n],奇采样序列为z[n]=x[2n+1]。 上式中的k N W -为旋转因子N k j e /2π-。下式则为y[n]与z[n]的表达式: 2. 蝶形变换的原理: 下图给出了蝶形变换的运算流图,可由两个N/2点的FFT (Y[k]和Z[k]得出N 点FFT X[k])。同理,每个N/2点的FFT 可以由两个N/4点的FFT 求得。按这种方法,该过程可延迟后推到2点的FFT 。 下图为N=8的分解过程。图中最右边的为8个时域采样点的8点FFTX[k],由偶编号采样点的4点FFT 和奇编号采样点的4点得到。这4点偶编号又由偶编号的偶采

样点的2点FFT 和奇编号的偶采样点的2点FFT 产生。相同的4点奇编号也是如此。依次往左都可以用相同的方法算出,最后由偶编号的奇采样点和奇编号的偶采样点的2点FFT 算出。图中没2点FFT 成为蝶形,第一级需要每组一个蝶形的4组,第二级有每组两个蝶形的两组,最后一级需要一组4个蝶形。 四、实验内容 1.定义函数disbutterfly ,程序根据FFT 的定义:]2[][][N n x n x n y + +=、n N W N n x n x n z -+-=])2 [][(][,将序列x 分解为偶采样点y 和奇采样点z 。 function [y,z]=disbutterfly(x) N=length(x); n=0:N/2-1; w=exp(-2*1i*pi/N).^n; x1=x(n+1); x2=x(n+1+N/2); y=x1+x2; z=(x1-x2).*w; 2.定义函数rader ,纠正输出序列的输出顺序。 function y=rader(x,N) n=[0:N-1]; bn=dec2bin(n); rbn=fliplr(bn); rn=bin2dec(rbn); y=x(rn+1); 3.定义函数myfft ,程序中套了两个循环。 function X=myfft(x) N=length(x); h=log2(N); %h=3 for i=1:h %第一次i=1;第二次i=2 s=[]; for j=1:2^(i-1);%i=1时,j=1;i=2时,j=1:2 M=2^(h-i+1);%M:M=8;M=4 xj=x([1:M]+(j-1)*M);%xj=x([1:8]+(1-1)*8)=x(1)+x(2)...+x(8); %j=1:xj=x([1:4]);j=2:xj=x([1:4]+4) [y,z]=disbutterfly(xj); s=[s,y,z]; end x=s;

MAtlab-傅里叶变换-实验报告

陕西科技大学实验报告 班级信工142 学号22 姓名何岩实验组别实验日期室温报告日期成绩报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 1.求信号的离散时间傅立叶变换并分析其周期性和对称性; 给定正弦信号x(t)=2*cos(2*pi*10*t),fs=100HZ,求其DTFT。 (a)代码: f=10;T=1/f;w=-10:0.2:10; t1=0:0.0001:1;t2=0:0.01:1; n1=-2;n2=8;n0=0;n=n1:0.01:n2; x5=[n>=0.01]; x1=2*cos(2*f*pi*t1); x2=2*cos(2*f*pi*t2); x3=(exp(-j).^(t2'*w)); x4=x2*x3; subplot(2,2,1);plot(t1,x1); axis([0 1 1.1*min(x2) 1.1*max(x2)]); xlabel('x(n)');ylabel('x(n)'); title('原信号x1'); xlabel('t');ylabel('x1'); subplot(2,2,3);stem(t2,x2); axis([0 1 1.1*min(x2) 1.1*max(x2)]); title('原信号采样结果x2'); xlabel('t');ylabel('x2'); subplot(2,2,2);stem(n,x5); axis([0 1 1.1*min(x5) 1.1*max(x5)]); xlabel('n');ylabel('x2'); title('采样函数x2'); subplot(2,2,4);stem(t2,x4); axis([0 1 -0.2+1.1*min(x4) 1.1*max(x4)]); xlabel('t');ylabel('x4'); title('DTFT结果x4'); (b)结果:

离散信号变换的matlab实现

实验四 离散信号的频域分析 一、 实验目的 1. 掌握序列的傅里叶变换、离散傅里叶级数、离散傅里叶变换、快速傅里叶变换的Matlab 实现; 2. 学习用FFT 对连续信号和离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。 二、 实验内容及步骤 1. 计算序列的DTFT 和DFT ,观察栅栏效应 设)()(4n R n x =,要求用MATLAB 实现: (1)计算)(n x 的傅里叶变换)(ωj e X ,并绘出其幅度谱; (2)分别计算)(n x 的4点DFT 和8点DFT ,绘出其幅度谱。并说明它们和)(ωj e X 的关系。 (提示:DFT 变换可用MA TLAB 提供的函数fft 实现,也可以自己用C 语言或matlab 编写) 2.计算序列的FFT ,观察频谱泄漏 已知周期为16的信号)1612cos()1610cos()(n n n x π π +=。 (1) 截取一个周期长度M=16点,计算其16点FFT ,并绘出其幅度谱; (2) 截取序列长度M=10点,计算其16点FFT ,绘出其幅度谱,并与(1)的结果进行比 较,观察频谱泄漏现象,说明产生频谱泄漏的原因。 三、 实验报告要求 1. 结合实验中所得给定典型序列幅频特性曲线,与理论结果比较,并分析说明误差产生的原因以及用FFT 作谱分析时有关参数的选择方法。 2. 总结实验所得主要结论。 1. 计算序列的DTFT 和DFT ,观察栅栏效应 设)()(4n R n x =,要求用MATLAB 实现: (1)计算)(n x 的傅里叶变换)(ωj e X ,并绘出其幅度谱; (2)分别计算)(n x 的4点DFT 和8点DFT ,绘出其幅度谱。并说明它们和)(ωj e X 的关系。 (1)代码: n=0:3; M=10;

傅里叶变换MATLAB程序

fs=51.2; N=1024; n=0:N-1; t=n/fs; x=0.5-0.5*sign(t-1); Y=fft(x,N); mag=abs(Y); Y1=fftshift(Y); mag1=abs(Y1); fn2=(-N/10.24:N/10.24)*fs/N; subplot(2,1,1) plot(fn2,mag1((N/2-N/10.24+1):(N/2+N/10.24+1))); set(gca,'XTick',(-5:0.5:5)); set(gca,'YTick',(0:10:60)); xlabel('频率/Hz');ylabel('振幅'); title('图1:矩形函数的FFT结果,N=512,fs=51.2Hz'); grid on; f=linspace(-5,5,1000); y=sqrt(2-2*cos(2*pi*f))./abs((2*pi*f)); subplot(2,1,2) plot(f,y); set(gca,'XTick',(-5:0.5:5)); set(gca,'YTick',(0:0.2:1)); xlabel('频率/Hz');ylabel('振幅'); title('图2:矩形函数傅里叶变换的理论结果'); grid on

-5-4.5-4-3.5-3-2.5-2-1.5-1-0.500.51 1.52 2.53 3.54 4.55010203040 50 60 频率/Hz 振幅 图1:矩形函数的FFT 结果,N=512,fs=51.2Hz -5-4.5-4-3.5-3-2.5-2-1.5-1-0.500.51 1.52 2.53 3.54 4.55 00.2 0.4 0.60.8 1频率/Hz 振幅图2:矩形函数傅里叶变换的理论结果

快速傅里叶变换_蝶形运算_按时间抽取基2-fft算法_MATLAB代码

function y=MyFFT_TB(x,n) %MYFFT_TB:My Fast Fourier Transform Time Based %按时间抽取基2-fft算法 %input: % x -- 输入的一维样本 % n -- 变换长度,缺省时n=length(x) 当n小于x数据长度时,x数据被截断到第n个数据% 当n大于时,x数据在尾部补0直到x 含n个数据 %output: % y -- 1*n的向量,快速傅里叶变换结果 %variable define: % N -- 一维数据x的长度 % xtem -- 临时储存x数据用 % m,M -- 对N进行分解N=2^m*M,M为不能被2整除的整数 % two_m -- 2^m % adr -- 变址,1*N的向量 % l -- 当前蝶形运算的级数 % W -- 长为N/2的向量,记录W(0,N),W(1,N),...W(N/2-1,N) % d -- 蝶形运算两点间距离 % t -- 第l级蝶形运算含有的奇偶数组的个数 % mul -- 标量,乘数 % ind1,ind2 -- 标量,下标 % tem -- 标量,用于临时储存 %参考文献: % https://www.doczj.com/doc/464203384.html,/view/fea1e985b9d528ea81c779ee.html %% 输入参数个数检查 msg=nargchk(1,2,nargin); error(msg); %% 输入数据截断或加0 N=length(x); if nargin==2 if N

MAtlab傅里叶变换实验报告

M A t l a b傅里叶变换实 验报告 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

班级信工142 学号 22 姓名何岩实验组别 实验日期室温报告日期成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 1.求信号的离散时间傅立叶变换并分析其周期性和对称性; 给定正弦信号x(t)=2*cos(2*pi*10*t),fs=100HZ,求其DTFT。(a)代码: f=10;T=1/f;w=-10::10; t1=0::1;t2=0::1; n1=-2;n2=8;n0=0;n=n1::n2; x5=[n>=]; x1=2*cos(2*f*pi*t1); x2=2*cos(2*f*pi*t2); x3=(exp(-j).^(t2'*w)); x4=x2*x3; subplot(2,2,1);plot(t1,x1); axis([0 1 *min(x2) *max(x2)]); xlabel('x(n)');ylabel('x(n)'); title('原信号x1'); xlabel('t');ylabel('x1'); subplot(2,2,3);stem(t2,x2); axis([0 1 *min(x2) *max(x2)]); title('原信号采样结果x2'); xlabel('t');ylabel('x2'); subplot(2,2,2);stem(n,x5); axis([0 1 *min(x5) *max(x5)]); xlabel('n');ylabel('x2'); title('采样函数x2'); subplot(2,2,4);stem(t2,x4); axis([0 1 +*min(x4) *max(x4)]); xlabel('t');ylabel('x4'); title('DTFT结果x4'); (b)结果: 2.用以下两个有限长序列来验证DTFT的线性、卷积和共轭特性;

傅里叶变换matlab代码

傅里叶变换m a t l a b代 码 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

%傅里叶变换 clc;clear all;close all; tic Fs=128;%采样频率,频谱图的最大频率 T=1/Fs;%采样时间,原始信号的时间间隔 L=256;%原始信号的长度,即原始离散信号的点数 t=(0:L-1)*T;%原始信号的时间取值范围 x=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180)+3*cos(2*pi*30*t-90*pi/180); z=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180); z1=6*cos(2*pi*30*t-90*pi/180); z1(1:L/2)=0; z=z+z1; y=x;%+randn(size(t)); figure; plot(t,y) title('含噪信号') xlabel('时间(s)') hold on plot(t,z,'r--')

N=2^nextpow2(L);%N为使2^N>=L的最小幂 Y=fft(y,N)/N*2; Z=fft(z,N)/N*2;%快速傅里叶变换之后每个点的幅值是直流信号以外的原始信号幅值的N/2倍(是直流信号的N倍) f=Fs/N*(0:N-1);%频谱图的频率取值范围 A=abs(Y);%幅值 A1=abs(Z); B=A; %让很小的数置零. B1=A1; A(A<10^-10)=0; % A1(A1<10^-10)=0; P=angle(Y).*A./B; P1=angle(Z).*A1./B1; P=unwrap(P,pi);%初相位值,以除去了振幅为零时的相位值 P1=unwrap(P1,pi); figure subplot(211) plot(f(1:N/2),A(1:N/2))%函数ffs返回值的数据结构具有对称性,因此只取前一半 hold on

傅里叶变换matlab程序

Fs = 1000; % Sampling frequency采样频率 T = 1/Fs; % Sample time采样周期 L = 1000; % Length of signal信号长度(点的个数) t = (0:L-1)*T; % Time vector时间向量(序列)(用来画图) % Sum of a 50 Hz sinusoid and a 120 Hz sinusoid一个50赫兹正弦加上120赫兹正弦x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); y = x + 2*randn(size(t)); % Sinusoids plus noise正弦之和加上正态噪声 figure(1); plot(Fs*t(1:50),y(1:50)) title('Signal Corrupted with Zero-Mean Random Noise')%被零均值噪声祸害的信号xlabel('time (milliseconds)') %It is difficult to identify the frequency components by looking at the original signal. Converting to the frequency domain, the discrete Fourier transform of the noisy signal y is found by taking the fast Fourier transform (FFT): %从时域上直接看原信号难以确定各频率分量. 通过使用快速傅里叶变换FFT, 实现了含噪声信号Y的离散傅里叶变换,从而把信号转换到频域上(确定频率分量) NFFT = 2^nextpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2+1); % Plot single-sided amplitude spectrum. figure(2); plot(f,2*abs(Y(1:NFFT/2+1))) title('Single-Sided Amplitude Spectrum of y(t)') xlabel('Frequency (Hz)') ylabel('|Y(f)|') A=xlsread('SHUJU2.xlsx') ; %这里的SHUJU1.xlsx是数据 FS=1000; % FS是采样率 T=1/FS; L=length(A) t=(0:L-1)*T; figure(3);

MATLAB的离散傅里叶变换的仿真

应用MATLAB对信号进行频谱分析及滤波 设计目的 要求学生会用MATLAB语言进行编程,绘出所求波形,并且运用FFT求对连续信号进行分析。 一、设计要求 1、用Matlab产生正弦波,矩形波,并显示各自的时域波形图; 2、进行FFT变换,显示各自频谱图,其中采样率、频率、数据长度自选,要求注明; 3、绘制三种信号的均方根图谱; 4、用IFFT回复信号,并显示恢复的正弦信号时域波形图。 二、系统原理 用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行频谱分析的信号是模拟信号和时域离散信号。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现频率分辨率是2π/N。 x(n)是一个长度为M的有限长序列,则x(n)的N点离散傅立叶变换为: N?1?2?kn)(nx j?W W NN e?0?n N X(k)=DFT[x(n)]=,k=0,1,...,N-1N?11?kn?)(WXk N N0?n x(n) =IDFT[X(k)]= 逆变换:,k=0,1,...,N-1 但FFT是一种比DFT更加快速的一种算法,提高了DFT的运算速率,为数字信号处理技术应用于各种信号处理创造了条件,大大提高了数字信号处理技术的发展。本实验就是采用FFT,IFFT对信号进行谱分析。 三、程序设计 fs=input('please input the fs:');%设定采样频率 N=input('please input the N:');%设定数据长度 t=0:0.001:1; f=100;%设定正弦信号频率 %生成正弦信号 x=sin(2*pi*f*t); figure(1); subplot(211); plot(t,x);%作正弦信号的时域波形 axis([0,0.1,-1,1]); title('正弦信号时域波形'); z=square(50*t); subplot(212) plot(t,z) axis([0,1,-2,2]); title('方波信号时域波形');grid;

matlab图像傅里叶变换图像

电子1004 黄佳卿201081163 图像傅里叶变换代码如下: I = imread('C:\Users\jiaqing\Desktop\matlab homework\zhen.jpg'); % 读入图像 subplot(2,2,1),imshow(I); title('zhen'); FI = abs((fft2(I))); NFI = 255*mat2gray(FI); %归一化 SFI = fftshift(NFI); imgray = rgb2gray(SFI); %灰阶 subplot(2,2,2),imshow(imgray); title('fft of zhen'); I = imread('C:\Users\jiaqing\Desktop\matlab homework\cat.jpg'); % 读入图像 subplot(2,2,3),imshow(I); title('cat'); FI = abs((fft2(I))); NFI = 255*mat2gray(FI); %归一化 SFI = fftshift(NFI); imgray = rgb2gray(SFI); %灰阶 subplot(2,2,4),imshow(imgray); title('fft of cat'); 运行结果如下:

图像添加高斯噪声与去除代码如下: I = imread('C:\Users\jiaqing\Desktop\matlab homework\zhen.jpg'); % 读入图像 %给图像添加噪声 grayI = rgb2gray(I); nI=imnoise(grayI,'gaussian',0.05); subplot(2,2,1);imshow(nI); title('加入高斯噪声后的图像'); %加入噪声后图像的傅立叶变换 FI = abs((fft2(nI))); NFI = 255*mat2gray(FI); %归一化 SFI = fftshift(NFI); subplot(2,2,2),imshow(SFI); title('加入噪声后的傅里叶变换'); xd=wiener2(nI,[3 3]); subplot(2,2,3);imshow(xd); %去除噪声后图像的傅立叶变换

相关主题
文本预览
相关文档 最新文档