傅里叶变换分析频谱(FFT)
此前因为英语不好,看不下去help,进而懒得看demo,这才发现,原来Demo里面有如此多而有用的信息。学会了。
傅里叶变换的物理意义:
图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。
傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。
从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数。
Y=fft(X)利用快速傅里叶变换返回向量X的离散傅里叶变化。如果X是个矩阵,则返回矩阵每一列的傅里叶变化。
Y=fft(X,n)返回n维傅里叶变换。如果X的长度不足,则已0填充,如果X长度长于N,则对X进行截顶操作。
傅里叶变换最常用的是对一个加噪的时域信号进行频域分析。
语法:
datf=fft(data)datf=fft(data,N)datf=fft(data,N,'complex')
如果data在时域范围内,值为实数且按连续的时间间隔ts取样,则datf为频域范围内的数值,频率范围从0到尼奎斯特频率。尼奎斯特频率不取决于信号的长度(无论基数或者偶数)。经傅里叶变换后的每个值通过除以信号长度的平方根进行归一化。这是为了保护信号的能量和噪声的特性。
在默认情况下,进行变换的长度由信号长度决定。第二个参数N是强迫将傅里叶变换限制在范围N内,根据实际情况进行填充或者截顶。这样实际信号的频率值再N/2或者(N+1)/2范围内。
对于实数信号,默认datf只包括非负频率,对于复数信号来说,也包括负数频率。因此加参数complex.
fft(x)是伽罗瓦向量X的离散傅里叶变换。如果X在伽罗瓦区域为0-2^m,则X的长度为2^m-1。
m=4;n=2^m-1;x=gf(randint(n,1,2^m),m);%Random vector y=fft(x); %Transform of x z=ifft(y);%Inverse transform of y
一维情况下:
clear all
clc
clear
f=[30.531.233.734.535.130.334.733.130.531.531.233.7
34.535.130.334.733.130.532.231.832.633.634.830.532.532.831.9 30.932.334.632.633.832.730.531.133.532.733.434.532.330.831.633.5 35.632.234.534.533.831.932.530.1];
g=randn(size(f));
y=fft(g+f);
figure,plot(fftshift(abs(y))),title('fft with noise');
xlabel('Frequency(Hz)');
ylabel('fft');
经傅里叶变换后y的平方显示为能量。能量对频率的图叫做周期图。
n=51;%n=lengh(X)
power=abs(y(1:floor(n))).^2;%floor计算n中每个元素离它最近的整数。
nyquist=10;
freq=(1:n)/(n)*nyquist;
figure,plot(freq,power);
xlabel('frequency');
title('Periodogram');
下面利用能量周期对画出周期图
period=1./freq;figure,plot(period,power);axis([0603e+6]);
ylabel('Power');xlabel('Period');
通过画一个强调符号,我们可以更加精确的找到他的周期。
hold on;
index=find(power==max(power));
mainPeriodStr=num2str(period(index));
figure,plot(period(index),power(index),'r.','MarkerSize',25);
text(period(index)+2,power(index),['Period=',mainPeriodStr]);
hold off;
plot函数:
plot(Y),当Y是实数时,直接在坐标中画出对应的值,当Y是复数时,对应画出实数部分及虚数部分。
plot(X1,Y1,...,Xn,Yn)画出每个Xn,Yn对。如果其中一个是个矩阵另外一个是个向量,画出向量对矩阵的每一行或者矩阵的列对向量相应的维。如果Xn是个标量而Yn是个向量,画出离散的Yn垂直对应Xn。
plot(X1,Y1,LineSpec,'PropertyName',PropertyValue)。
一、实验目的 1在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解; 2熟悉并掌握按时间抽取FFT算法的程序; 3了解应用FFT进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、栅栏效应等,以便在实际中正确应用FFT。 二、实验内容 1仔细分析教材第六章‘时间抽取法FFT ’的算法结构,编制出相应的用FFT 进行信号分析的C语言(或MATLAB 语言)程序; 用MATLAB语言编写的FFT源程序如下: %% 输入数据f、N、T及是否补零 clc; clear; f=input('输入信号频率f:'); N=input('输入采样点数N:'); T=input('输入采样间隔T:'); C=input('信号是否补零(补零输入1,不补零输入0):'); %补零则输入1,不补则输入0 if(C==0) t=0:T:(N-1)*T; x=sin(2*pi*f*t); b=0; e lse b=input('输入补零的个数:'); while(log2(N+b)~=fix(log2(N+b))) b=input('输入错误,请重新输入补零的个数:'); end t=0:T:(N+b-1)*T; x=sin(2*pi*f*t).*(t<=(N-1)*T); end %% fft算法的实现 A=bitrevorder(x); % 将序列按二进制倒序 N=N+b; M=log2(N); % M为蝶形算法的层数 W=exp(-j*2*pi/N); for L=1:1:M %第L层蝶形算法 B=2^L/2; % B为每层蝶形算法进行加减运算的两个数的间隔 K=N/(2^L); % K为每层蝶形算法中独立模块的个数 for k=0:1:K-1 for J=0:1:B-1
傅里叶分析之掐死教程(完整版)更新于2014.06.06 Heinrich · 6 个月前 作者:韩昊知乎:Heinrich 微博:@花生油工人知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。 转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 我保证这篇文章和你以前看过的所有文章都不同,这是12年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生
上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会死吗?会死吗?)所以我一直想写一个有意思的文章来解释傅里叶分析,有可能的话高中生都能看懂的那种。所以,不管读到这里的您从事何种工作,我保证您都能看懂,并且一定将体会到通过傅里叶分析看到世界另一个样子时的快感。至于对于已经有一定基础的朋友,也希望不要看到会的地方就急忙往后翻,仔细读一定会有新的发现。 ——————————————以上是定场诗—————————————— 下面进入正题: 抱歉,还是要啰嗦一句:其实学习本来就不是易事,我写这篇文章的初衷也是希望大家学习起来更加轻松,充满乐趣。但是千万!千万不要把这篇文章收藏起来,或是存下地址,心里想着:以后有时间再看。这样的例子太多了,也许几年后你都没有再打开这个页面。无论如何,耐下心,读下去。这篇文章要比读课本要轻松、开心得多…… p.s.本文无论是cos还是sin,都统一用“正弦波”(Sine Wave)一词来代表简谐波。 一、什么是频域 从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了?我没有疯,这个静止的世界就叫做频域。 先举一个公式上并非很恰当,但意义上再贴切不过的例子: 在你的理解中,一段音乐是什么呢?
实验报告 课程名称信号与线性系统分析 实验名称周期信号的傅里叶级数和频谱分析实验类型验证(验证、综合、设计、创新) 3日实验四、周期信号的傅里叶级数和频谱分析1实验目的 1)学会利用MATLAB分析傅里叶级数展开,并理解傅里叶级数的物理含义; 2)学会利用MATLAB分析周期信号的频谱特性。 2实验原理及实例分析 周期信号可以再函数的区间里展成在完备正交信号空间中的无穷级数。如果完备的正交函数集是三角函数集或指数函数集,那么,周期信号所展开的无穷级数就分别成为“三角型傅里叶级数”或“指数型傅里叶级数”,统称为傅里叶级数。
2.1周期信号的傅里叶级数 (基本原理请参阅教材第四章的4.1节和4.2节。) 例1:周期方波信号)(t f 如图1所示,试求出该信号的傅里叶级数,利用MATLAB 编程实现其各次谐波的叠加,并验证Gibbs 现象。 图1 周期方波信号)(t f 的波形图 解:从理论分析可知,周期方波信号)(t f 的傅里叶级数展开式为 )9sin 9 17sin 715sin 513sin 31(sin 4)(00000 +++++=t t t t t t f ωωωωωπ 其中,ππω220== T 。则可分别求出1、3、5、9、19、39、79、159项傅里叶级数求和的结果,其MATLAB 程序如下,产生的图形如图2所示。 close all;clear all; clc t = -2:0.0001:2; omega = 2 * pi; y = square(2 * pi * t,50); n_max = [1 3 5 9 19 39 79 159]; N = length(n_max); for k = 1:N fk = zeros(1,length(t)); for n = 1:2:n_max(k) bn = 4 / (pi * n); fk = fk + bn * sin(n * omega * t); end figure;plot(t,y,t,fk,'Linewidth',2); xlabel('t(sec)');ylabel('部分和的波形'); f(t) t(sec)
MATLAB实验傅里叶分析
实验七 傅里叶变换 一、实验目的 傅里叶变换是通信系统、图像处理、数字信号处理以及物理学等领域内的一种重要的数学分析工具。通过傅里叶变换技术可以将时域上的波形分 布变换为频域上的分布,从而获得信号的频谱特性。MATLAB 提供了专门的函数fft 、ifft 、fft2(即2维快速傅里叶变换)、ifft2以及fftshift 用于实现对信号的傅里叶变换。本次实验的目的就是练习使用fft 、ifft 以及fftshift 函数,对一些简单的信号处理问题能够获取其频谱特性(包括幅频和相频特性)。 二、实验预备知识 1. 离散傅里叶变换(DFT)以及快速傅里叶变换(FFT)简介 设x (t )是给定的时域上的一个波形,则其傅里叶变换为 2()() (1)j ft X f x t e dt π∞--∞=? 显然X ( f )代表频域上的一种分布(波形),一般来说X ( f )是复数。而傅里叶逆变换定义为: 2()() (2)j ft x t X f e df π∞-∞ =?
因此傅里叶变换将时域上的波形变换为频域上的波形,反之,傅里叶逆变换则将频域上的波形变换为时域上的波形。 由于傅里叶变换的广泛应用,人们自然希望能够使用计算机实现傅里叶变换,这就需要对傅里叶变换(即(1)式)做离散化处理,使 之符合电脑计算的特征。另外,当 把傅里叶变换应用于实验数据的分 析和处理时,由于处理的对象具有 离散性,因此也需要对傅里叶变换 进行离散化处理。而要想将傅里叶 变换离散化,首先要对时域上的波 形x (t )进行离散化处理。采用一个 时域上的采样脉冲序列: δ (t -nT ), n = 0, 1, 2, …, N -1; 可以实现上述目的,如图所示。其中N 为采样点数,T 为采样周期;f s = 1/T 是采样频率。注意采样时,采样频率f s 必须大于两倍的信号频率(实际是截止频率),才能避免混迭效应。 接下来对离散后的时域波形()()()(x t x t t n T x n T δ= -=的傅里叶变换()X f 进行离散处理。与上述做法类 似,采用频域上的δ脉冲序列: x (t δ x (t )δ t t t
实验二傅里叶分析及应用 姓名学号班级 一、实验目的 (一)掌握使用Matlab进行周期信号傅里叶级数展开和频谱分析 1、学会使用Matlab分析傅里叶级数展开,深入理解傅里叶级数的物理含义 2、学会使用Matlab分析周期信号的频谱特性 (二)掌握使用Matlab求解信号的傅里叶变换并分析傅里叶变换的性质 1、学会运用Matlab求连续时间信号的傅里叶变换 2、学会运用Matlab求连续时间信号的频谱图 3、学会运用Matlab分析连续时间信号的傅里叶变换的性质 (三)掌握使用Matlab完成信号抽样并验证抽样定理 1、学会运用MATLAB完成信号抽样以及对抽样信号的频谱进行分析 2、学会运用MATLAB改变抽样时间间隔,观察抽样后信号的频谱变化 3、学会运用MATLAB对抽样后的信号进行重建 二、实验条件 需要一台PC机和一定的matlab编程能力 三、实验内容 2、分别利用Matlab符号运算求解法和数值计算法求下图所示信号的FT,并画出其频谱图(包括幅度谱和相位谱)[注:图中时间单位为:毫秒(ms)]。
符号运算法: Ft= sym('t*(Heaviside(t+2)-Heaviside(t+1))+Heaviside(t+1)-Heaviside(t-1)+(-t)*(Heavi side(t-1)-Heaviside(t-2))'); Fw = fourier(Ft); ezplot(abs(Fw)),grid on; phase = atan(imag(Fw)/real(Fw)); ezplot(phase);grid on; title('|F|'); title('phase'); 3、试用Matlab 命令求ω ωωj 54 -j 310)F(j ++= 的傅里叶反变换,并绘出其时域信号图。
实验二傅里叶分析及应用 、实验目的 (一)掌握使用Matlab 进行周期信号傅里叶级数展开和频谱分析 1、学会使用Matlab 分析傅里叶级数展开,深入理解傅里叶级数的物理含义 2、学会使用Matlab 分析周期信号的频谱特性 二)掌握使用Matlab 求解信号的傅里叶变换并分析傅里叶变换的性质 1、学会运用Matlab 求连续时间信号的傅里叶变换 2、学会运用Matlab 求连续时间信号的频谱图 3、学会运用Matlab 分析连续时间信号的傅里叶变换的性质 三)掌握使用Matlab 完成信号抽样并验证抽样定理 1、学会运用MATLAB 完成信号抽样以及对抽样信号的频谱进行分析 2、学会运用MATLAB 改变抽样时间间隔,观察抽样后信号的频谱变化 3、学会运用MATLAB 对抽样后的信号进行重建 、实验条件 Win7系统,MATLAB R2015a 三、实验内容 1、分别利用Matlab 符号运算求解法和数值计算法求下图所示信号的FT,并画出其频谱图(包括幅度谱和相位谱)[注:图中时间单位为:毫秒(ms)]。
Code: ft = sym( ' (t+2)*(heaviside(t+2)-heavisi de(t+1))+(heaviside(t+1)-heav iside(t- 1))+(2-t)*(heaviside( t-1)-heaviside(t- 2))' ); fw = simplify(fourier(ft)); subplot(2, 1, 1); ezplot(abs(fw)); grid on; title( 'amp spectrum' ); phi = atan(imag(fw) / real(fw)); subplot(2, 1, 2); ezplot(phi); grid on ; title( 'phase spectrum' ); 符号运算法 Code: dt = 0.01; t = -2: dt: 2; ft (t+2).*(uCT(t+2)- uCT(t+1))+(u CT(t+1)-uCT(t- 1))+(2-t).*(uCT (t-1)- uCT(t-2)); N = 2000; k = -N: N; w = pi * k / (N*dt); fw = dt*ft*exp(-i*t'*w); fw = abs(fw); plot(w, fw), grid on; axis([-2*pi 2*pi -1 3.5]); 数值运算法
一、傅立叶变化的原理; (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实现 一、实验目的: 1.利用MATLAB实现周期信号的分解与合成,并图示仿真结果; 2.用MATLAB实现周期信号的频谱,画图观察和分析周期信号的频谱; 3.通过MATLAB对周期信号频谱的仿真,进一步加深对周期信号频谱理论知识的理解。 二、实验内容 9.1(a):程序: display('Please input the value of m(傅里叶级数展开项数)'); m=input('m='); t=-3*pi:0.01:3*pi; n=round(length(t)/4); f=cos(t).*(heaviside(t+2.5*pi)-heaviside(t+1.5*pi)+heaviside(t+0.5*pi)-heaviside(t-0.5 *pi)+heaviside(t-1.5*pi)-heaviside(t-2.5*pi)); y=zeros(m+1,max(size(t))); y(m+1,:)=f'; figure(1); plot(t/pi,y(m+1,:)); grid; axis([-3 3 -1 1.5]); title('半波余弦'); xlabel('单位:pi','Fontsize',8); x=zeros(size(t)); kk='1'; syms tx n T=2*pi; fx=sym('cos(tx)'); Nn=30; An=zeros(m+1,1); Bn=zeros(m+1,1); a0=2*int(fx,tx,-T/4,T/4)/T an=2*int(fx*cos(2*pi*(n+eps/2)*tx/T),tx,-T/4,T/4)/T bn=2*int(fx*sin(2*pi*(n+eps/2)*tx/T),tx,-T/4,T/4)/T An(1)=double(vpa(a0,Nn)); An(2)=0.5; for k=2:m An(k+1)=double(vpa(subs(an,n,k),Nn)); Bn(k+1)=double(vpa(subs(bn,n,k),Nn));
实验七 傅里叶变换 一、实验目的 傅里叶变换是通信系统、图像处理、数字信号处理以及物理学等领域内的一种重要的数学分析工具。通过傅里叶变换技术可以将时域上的波形分 布变换为频域上的分布,从而获得信号的频谱特性。MA TLAB 提供了专门的函数fft 、ifft 、fft2(即2维快速傅里叶变换)、ifft2以及fftshift 用于实现对信号的傅里叶变换。本次实验的目的就是练习使用fft 、ifft 以及fftshift 函数,对一些简单的信号处理问题能够获取其频谱特性(包括幅频和相频特性)。 二、实验预备知识 1. 离散傅里叶变换(DFT)以及快速傅里叶变换(FFT)简介 设x (t )是给定的时域上的一个波形,则其傅里叶变换为 2()() (1)j ft X f x t e dt π∞ --∞ =? 显然X ( f )代表频域上的一种分布(波形),一般来说X ( f )是复数。而傅里叶逆变换定义为: 2()() (2)j ft x t X f e df π∞ -∞ =? 因此傅里叶变换将时域上的波形变换为频域上的波形,反之,傅里叶逆变换则将频域上的波形变换为时域上的波形。 由于傅里叶变换的广泛应用,人们自然希望能够使用计算机实现傅里叶变换,这就需要对傅里叶变换(即(1)式)做离散化处理,使之符合电脑计算的特征。另外,当把傅里叶变换应用于实验数据的分析和处理时,由于处理的对象具有离散性,因此也需要对傅里叶变换进行离散化处理。而要想将傅里叶变换离散化,首先要对时域上的波形x (t )进行离散化处理。采用一个时域上的采样脉冲序列: δ (t -nT ), n = 0, 1, 2, …, N -1; 可以实现上述目的,如图所示。其中N 为采样点数,T 为采样周期;f s = 1/T 是采样频率。注意采样时,采样频率f s 必须大于两倍的信号频率(实际是截止频率),才能避免混迭效应。 接下来对离散后的时域波形()()()()x t x t t nT x nT δ=-=的傅里叶变换()X f 进行离散处理。与上述做法类似,采用频域上的δ脉冲序列: δ ( f -n/T 0), n = 0, 1, 2, …, N -1;T 0= NT 为总采样时间 可以实现傅里叶变换()X f 的离散化,如下图示。不难看出,离散后的傅里叶变换其频率间隔(频率轴上离散点的间隔,即频域分辨率) x (t ) δ 脉冲序列 x (t )δ (t -nT ) t t t
实验二傅里叶分析及应用 -、实验目的 (一)掌握使用Matlab进行周期信号傅里叶级数展开和频谱分析 1、学会使用Matlab分析傅里叶级数展开,深入理解傅里叶级数的物理含义 2、学会使用Matlab分析周期信号的频谱特性 (二)掌握使用Matlab求解信号的傅里叶变换并分析傅里叶变换的性质 1、学会运用Matlab求连续时间信号的傅里叶变换 2、学会运用Matlab求连续时间信号的频谱图 3、学会运用Matlab分析连续时间信号的傅里叶变换的性质 (三)掌握使用Matlab完成信号抽样并验证抽样定理 1、学会运用MATLAB完成信号抽样以及对抽样信号的频谱进行分析 2、学会运用MATLAB改变抽样时间间隔,观察抽样后信号的频谱变化 3、学会运用MATLAB对抽样后的信号进行重建 、实验条件 Win7 系统,MATLAB R2015a 三、实验内容 1、分别利用Matlab符号运算求解法和数值计算法求下图所示信号的FT,并画出其频
谱图(包括幅度谱和相位谱)
Code: ft = sym( ' (t+2)*(heaviside(t+2)-heavisi de(t+1))+(heaviside(t+1)-heav iside(t- 1))+(2-t)*(heaviside( t-1)-heaviside(t-2))' ); fw = simplify(fourier(ft)); subplot(2, 1, 1); ezplot(abs(fw)); gridon ; title( 'amp spectrum' ); phi = atan(imag(fw) / real(fw)); subplot(2, 1,2); ezplot(phi); grid on ; title( 'phase spectrum' ); 符号运算法 Code: dt = 0.01; t = -2: dt: 2; ft (t+2).*(uCT(t+2)-uCT(t+1))+(u CT(t+1)-uCT(t-1))+(2-t).*(uCT (t-1)-uCT(t-2)); N = 2000; k = -N: N; w = pi * k / (N*dt); fw = dt*ft*exp(-i*t'*w); fw = abs(fw); plot(w, fw), grid on; axis([-2*pi 2*pi -1 3.5]); 数值运算法amp spectrum -6-4 -2 0 2 4 6 w x10 phase spectrurri -6 -4 -2 0 2 4 6 w
实验二傅里叶分析及应用 一、实验目的 (一)掌握使用Matlab进行周期信号傅里叶级数展开和频谱分析 1、学会使用Matlab分析傅里叶级数展开,深入理解傅里叶级数的物理含义 2、学会使用Matlab分析周期信号的频谱特性 (二)掌握使用Matlab求解信号的傅里叶变换并分析傅里叶变换的性质 1、学会运用Matlab求连续时间信号的傅里叶变换 2、学会运用Matlab求连续时间信号的频谱图 3、学会运用Matlab分析连续时间信号的傅里叶变换的性质 (三)掌握使用Matlab完成信号抽样并验证抽样定理 1、学会运用MATLAB完成信号抽样以及对抽样信号的频谱进行分析 2、学会运用MATLAB改变抽样时间间隔,观察抽样后信号的频谱变化 3、学会运用MATLAB对抽样后的信号进行重建 二、实验条件 Win7系统,MATLAB R2015a 三、实验内容 1、分别利用Matlab符号运算求解法和数值计算法求下图所示信号的FT,并画出其频谱图(包括幅度谱和相位谱)[注:图中时间单位为:毫秒(ms)]。
符号运算法 数值运算法
t (20 π ex p(-3 t) heaviside(t) - 8 π ex p(-5 t) heaviside(t))/(2 π) 2、试用Matlab 命令求ω ω ωj 54 -j 310)F(j ++= 的傅里叶反变换,并绘出其时域信号图。 两个单边指数脉冲的叠加 3、已知门函数自身卷积为三角波信号,试用Matlab 命令验证FT 的时域卷积定理。
4、设有两个不同频率的余弦信号,频率分别为Hz f 1001=,Hz f 38002=;现在使用抽样频率Hz f s 4000=对这三个信号进行抽样,使用MATLAB 命令画出各抽样信号的波形和频谱,并分析其频率混叠现象 > > > > > > > > > >
实验二 用快速傅里叶变换对信号进行频谱分析 一、实验目的 1.理解离散傅里叶变换的意义; 2.掌握时域采样率的确定方法; 3.掌握频域采样点数的确定方法; 4.掌握离散频率与模拟频率之间的关系; 5.掌握离散傅里叶变换进行频谱分析时,各参数的影响。 二、实验原理 序列的傅里叶变换结果为序列的频率响应,但是序列的傅里叶变换是频率的连续函数,而且在采用计算机计算时,序列的长度不能无限长,为了便于计算机处理,作如下要求:序列x (n )为有限长,n 从0~N -1,再对频率ω在0~2π范围内等间隔采样,采样点数为N ,采样间隔为2π/N 。第k 个采样点对应的频率值为2πk /N 。可得离散傅里叶变换及其逆变换的定义为 ∑-=-=1 02)()(N n n N k j e n x k X π (1) ∑-==1 02)(1)(N k k N n j e k X N n x π (2) 如果把一个有限长序列看作是周期序列的一个周期,则离散傅里叶变换就是傅里叶级数。离散傅里叶变换也是周期的,周期为N 。 数字频率与模拟频率之间的关系为 s f f /2πω=,即s s T f f πωπω22== (3) 则第k 个频率点对应的模拟频率为 N kf NT k T N k f s s s k ==?=ππ212 (4) 在用快速傅里叶变换进行频谱分析时,要确定两个重要参数:采样率和频域采样点数,采样率可按奈奎斯特采样定理来确定,采样点数可根据序列长度或频率分辨率△f 来确定 f N f s ?≤,则f f N s ?≥ (5) 用快速傅里叶变换分析连续信号的频谱其步骤可总结如下: (1)根据信号的最高频率,按照采样定理的要求确定合适的采样频率f s ; (2)根据频谱分辨率的要求确定频域采样点数N ,如没有明确要求频率分辨率,则根据实际需要确定频率分辨率; (3)进行N 点的快速傅里叶变换,最好将纵坐标根据帕塞瓦尔关系式用功率来表示,
实验报告 2010年 4月 15日 实验二用matlab实现傅立叶变换 实验目的: 1.掌握傅立叶数值实现方法(矩阵算法) 2.生成连续周期信号,掌握程序优化技巧 3.对于自定义函数参数有效性的检查 4.复习并巩固“信号与系统”相关知识内容,学习用matlab实现问题实验环境:运行于Matlab7.6环境
实验内容:本次实验参照《信号与系统》——“Matlab综合实验”55页课后练习 习题: 1.如图4.4所示锯齿波信号,分别去一个周期的抽样数据X1(t),0<=t<=1和五个周期的 数据X(t),0<=t<5,计算其傅立叶变换X1(w)和X(w),比较有和不同并解释原因。 编程如下: 方法1: %计算单位锯齿波和五个周期波形的傅立叶变换 %解法1:基本用循环实现数值的计算;对于5个周期锯齿波用内外循环来生成实现 T1=1; %一个周期锯齿波 N1=10000; t1=linspace(0,T1-T1/N1,N1)'; f1=0*t1; f1=1-2*t1; OMG=32*pi; %频率抽样区间 K1=100; %频率抽样点数 omg=linspace(-OMG/2,OMG/2-OMG/K1,K1)'; X1=0*omg; for k=1:K1 %求解五个周期函数的傅里叶变换系数for n=1:N1 X1(k)=X1(k)+T1/N1*f1(n)*exp(-j*omg(k)*t1(n)); end end fs1=0*t1; for n=1:N1 %通过傅里叶逆变换还原原函数 for k=1:K1 fs1(n)=fs1(n)+OMG/2/pi/K1*X1(k)*exp(j*omg(k)*t1(n)); end end
脉搏、语音及图像信号的傅里叶分析 一、实验目的 1、了解常用周期信号的傅里叶级数表示。 2、了解周期脉搏信号、语音信号及图像信号的傅里叶分析过程 3、理解体会傅里叶分析的理论及现实意义 二、实验原理 任意一个周期为T 的函数f(t)都可以表示为傅里叶级数: 0001 0000000001()(cos sin )21()()1()cos()()1()sin()()n n n n n f t a a n t b n t a f t d t a f t n t d t b f t n t d t ππ π πππωωωωπωωωπωωωπ∞=---=++== =∑??? 其中0ω为角频率,称为基频,0a 为常数,n a 和n b 称为第n 次谐波的幅值。任何周期性非简谐交变信号均可用上述傅里叶级数进行展开,即分解为一系列不同次谐波的叠加。 对于如图1所示的方波,一个周期内的函数表达式为: (0t<)2() (-t 0)2h f t h ππ?≤??=??-≤? 其傅里叶级数展开为: 0100041()()sin(21)21411(sin sin 3sin 5)35n h f t n t n h t t t ωπωωωπ∞==--=+++∑ 同理:对于如图2所示的三角波,函数表达式为: 4t (-t <)44()232(1) (t )44h T T f t t T T h T π?≤??=??-≤? 其傅里叶级数展开为:
1202100022281()(1)()sin(21)21 811(sin sin 3sin 5) 35n n h f t n t n h t t t ωπωωωπ∞-==---=-++∑ 图1 方波 图2 三角波 从以上各式可知,任何周期信号都可以表示为无限多次谐波的叠加,谐波次数越高,振幅越小,它对叠加波的贡献就越小,当小至一定程度时(谐波振幅小于基波振幅的5%),则高次的谐波就可以忽略而变成有限次数谐波的叠加,这对设计仪器电路是很有意义的。 三、实验仪器 脉搏语音实验仪器,数字信号发生器,示波器 四、实验内容 1.傅里叶级数的合成 (1)利用数字信号发生器产生频率分别为100Hz 、300Hz 、500Hz 的正弦信号,并使其位相相同,振幅比为:1:1/3: 1/5,将上述三个信号,分别通过加法器输入到傅里叶分析仪,观察并记录其波形。 (2)利用数字信号发生器产生方波,输入到傅里叶分析仪,并将其与上述合成后的信号相比较。两者有何差异?试分析引起的原因,应如何消除? (3)利用数字信号发生器产生频率分别为200Hz 、600Hz 、1000Hz 的正弦信号,振幅比为:1:1/32:1/52,并且保证其相位相差180°,然后通过加法器输入到傅里叶分析仪,观察并记录其波形,并与数字信号发生器产生的三角波相比较。 (4)利用傅里叶分析仪分别产生方波与三角波,进行傅里叶分析,记录各正弦波频率以及相对的幅度之间的关系,并与上述加法器输入信号相比较。 2.滤波与选频分析 对上述(4)傅里叶分析的频谱,分别选择低频段和高频段信号通过傅里叶反变换,观察它们图像并导出保存,试分析低通滤波和高通滤波图像的区别。 3.周期信号傅里叶分析的应用: (1)“脉搏信号”的傅里叶分析 1)用傅里叶分析仪软件中提供的“脉搏信号”模块和压电晶体测试自己脉搏波的信号,观察你的脉搏信号。
实验三 信号的Fourier 分析 一、实验目的: 1. 掌握周期信号的频谱—— Fourier 级数的分析方法。 2. 深入理解信号频谱的概念,掌握典型信号的频谱以及Fourier 变换的主要性质。 二、实验设备: 安装有matlab6.5以上版本的PC 机一台。 三、实验内容: 1. 求如图所示周期矩形脉冲信号的Fourier 级数表达式,画出频谱图,并用前N 次谐波合成的信号近似。 f(t) 1 -1o T/2T t (1)Fourie 级数的系数为n a =0,4,210,2n n k n n k b π?=+?=??=? (2)画出周期矩形脉冲信号的频谱图 function f=f(m) n=1:2:m; x=(4/pi)./n; stem(n,x); grid on 运行:egf(25)
(3) 合成的近似信号function s=f(m) s=0;p=0; t=0:0.01:10; for n=1:2:m p=p+1/n*(sin(n*t)); end s=(4/3.14)*p; plot(t,s); egf(50)
2、使用fourier()函数求下列信号的傅里叶变换F(jw),并画出()F jw 。 (1)3()()t f t te t ε-= (2) f(t)=sgn(t) (1) 3()()t f t te t ε-= syms t x; x=fourier(t*exp(-3*t)*heaviside(t)) ezplot(abs(x)); xlabel('w(rad/sec)'); ylabel('f(t)'); grid on 运行得:x =1/(3+i*w)^2
第三章 傅里叶变换分析 1.什么是频谱?如何得到信号的频谱? 目前我们熟悉的是信号幅度随着时间变化而变化的常见表示方式,比如正弦信号的幅度随着时间按正弦函数的规律变化;另一方面,对于正弦信号,如果知道其振幅、频率和相位,则正弦信号的波形也惟一确定。根据这个原理和傅里叶级数理论,满足一定条件的周期信号都可以分解为不同频率的正弦分量的线性组合,从而我们用各个正弦分量的频率-幅度、频率-相位来表示周期信号的描述方式就称为周期信号的频谱表示,随着对信号研究的深入,我们将周期信号的频谱表示又推广到非周期信号的频谱表示,即通常的傅里叶变换。 对于周期信号,其频谱一般用傅里叶级数表示,而傅里叶级数的系数就称为信号的频谱: ()0110111()cos sin cos()T n n n n n n f t a a n t b n t c c n t ωωω?∞∞ ===++=++∑∑ 或 1()jn t T n n f t F e ω∞=-∞= ∑ 其中: 122 00 1() 0,1,2,...,1() 1,2, (2) T jn t T n T n n n F f t e dt n T F a jb n F a ω--==±±±∞=-=∞=? 对于非周期信号,其频谱一般用傅里叶变换表示: 1 ()()2j t f t F j e d ωωωπ ∞-∞=? 其中: ()() j t F j f t e dt ωω∞--∞=? 2.周期信号和非周期信号的频谱有何不同? 周期信号的频谱可以用傅里叶级数表示,它是离散的、非周期的和收敛的。 而非周期信号的频谱用傅里叶变换表示,它是连续的、非周期的和收敛的。若假设周期信 号为()T f t , 非周期信号为0() ()220 otherwise T T T f t t f t ?-<≤?=???,并假设周期信号()T f t 的傅里叶级数 的系数为n F ,非周期信号0()f t 的傅里叶变换为()F j ω,则有如下的关系:
摘要 DFT是在时域和频域上都已离散的傅里叶变换,适于数值计算且有快速算法,是利用计算机实现信号频谱分析的常用数学工具。文章介绍了利用DFT 分析信号频谱的基本流程,重点阐述了频谱分析过程中误差形成的原因及减小分析误差的主要措施。实例列举了MATLAB环境下频谱分析的实现程序。通过与理论分析的对比,解释了利用DFT分析信号频谱时存在的频谱混叠、频谱泄漏及栅栏效应,,并提出了相应的改进方法。 关键词:语音信号处理MATLAB 频谱分析语音合成 关键词:频谱分析;离散傅里叶变换;频谱混叠;频谱泄漏;栅栏效应
目录 摘要 (1) 目录 (2) 第1章引言 (3) 第2章MATLAB简介 (3) 第3章分析流程 (4) 第4章分析误差 (5) 4.1混叠现象 (5) 4.2截断效应 (5) 4.3栅栏效应 (6) 第5章分析实例 (7) 结束语 (10) 参考文献 (10)
第1章引言 信号的频谱分析就是利用傅里叶分析的方法,求出与时域描述相对应的频域描述,从中找出信号频谱的变化规律,以达到特征提取的目的[1]。不同信号的傅里叶分析理论与方法,在有关专业书中都有介绍,但实际的有待分析信号一般没有解析式,直接利用公式进行傅里叶分析非常困难。DFT是一种时域和频域均离散化的傅里叶变换,适合数值计算且有快速算法,是分析信号的有力工具。本文以连续时间信号为例,介绍利用DFT分析信号频谱的基本流程,重点阐述频谱分析过程中可能存在的误差。实例列出MATLAB环境下频谱分析的实现程序。 第2章matlab简介 MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。 MATLAB是解决工程技术问题的技术平台。利用它能够轻松完成复杂的数值计算,数据分析,符号计算和数据可视化等任务。MATLAB软件由主包和各类工具箱构成。其中,主包基本是一个用C/C++等语言编写成的函数库。该函数库提供矩阵(或数组)的各种算法以及建立在此基础上的各种应用函数和一些相关的用户有好操作界面。而工具箱从深度和广度上大大扩展了MATLAB主包的功能和应用领域。随着自身的不断完善和发展,MATLAB 功能越来越强大,应用也越来越广泛。 随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。声卡是计算机对语音信号进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D 和D/A转换等功能。尽管在Windows附件的娱乐中带有一个录音机,通过它
傅里叶分析之掐死教程(完整版) 投递人itwriter发布于2014-06-07 10:50 评论(24)有34667人阅读原文链接[收藏]?? 作者:韩昊 知乎:Heinrich 微博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。 转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 ——更新于,想直接看更新的同学可以直接跳到第四章———— 我保证这篇文章和你以前看过的所有文章都不同,这是 12 年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此
对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会死吗会死吗)所以我一直想写一个有意思的文章来解释傅里叶分析,有可能的话高中生都能看懂的那种。所以,不管读到这里的您从事何种工作,我保证您都能看懂,并且一定将体会到通过傅里叶分析看到世界另一个样子时的快感。至于对于已经有一定基础的朋友,也希望不要看到会的地方就急忙往后翻,仔细读一定会有新的发现。 ————以上是定场诗———— 下面进入正题: 抱歉,还是要啰嗦一句:其实学习本来就不是易事,我写这篇文章的初衷也是希望大家学习起来更加轻松,充满乐趣。但是千万!千万不要把这篇文章收藏起来,或是存下地址,心里想着:以后有时间再看。这样的例子太多了,也许几年后你都没有再打开这个页面。无论如何,耐下心,读下去。这篇文章要比读课本要轻松、开心得多…… .本文无论是 cos 还是 sin,都统一用“正弦波”(Sine Wave)一词来代表简谐波。 一、什么是频域 从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了我没有疯,这个静止的世界就叫做频域。 先举一个公式上并非很恰当,但意义上再贴切不过的例子: 在你的理解中,一段音乐是什么呢 这是我们对音乐最普遍的理解,一个随着时间变化的震动。但我相信对于乐器小能手们来说,音乐更直观的理解是这样的:
傅里叶变换分析频谱(FFT) 此前因为英语不好,看不下去help,进而懒得看demo,这才发现,原来Demo里面有如此多而有用的信息。学会了。 傅里叶变换的物理意义: 图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。 傅立叶变换在实际中有非常明显的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。 从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数。 Y=fft(X)利用快速傅里叶变换返回向量X的离散傅里叶变化。如果X是个矩阵,则返回矩阵每一列的傅里叶变化。 Y=fft(X,n)返回n维傅里叶变换。如果X的长度不足,则已0填充,如果X长度长于N,则对X进行截顶操作。 傅里叶变换最常用的是对一个加噪的时域信号进行频域分析。 语法: datf=fft(data)datf=fft(data,N)datf=fft(data,N,'complex') 如果data在时域范围内,值为实数且按连续的时间间隔ts取样,则datf为频域范围内的数值,频率范围从0到尼奎斯特频率。尼奎斯特频率不取决于信号的长度(无论基数或者偶数)。经傅里叶变换后的每个值通过除以信号长度的平方根进行归一化。这是为了保护信号的能量和噪声的特性。 在默认情况下,进行变换的长度由信号长度决定。第二个参数N是强迫将傅里叶变换限制在范围N内,根据实际情况进行填充或者截顶。这样实际信号的频率值再N/2或者(N+1)/2范围内。 对于实数信号,默认datf只包括非负频率,对于复数信号来说,也包括负数频率。因此加参数complex. fft(x)是伽罗瓦向量X的离散傅里叶变换。如果X在伽罗瓦区域为0-2^m,则X的长度为2^m-1。 m=4;n=2^m-1;x=gf(randint(n,1,2^m),m);%Random vector y=fft(x); %Transform of x z=ifft(y);%Inverse transform of y 一维情况下: