FFT的Matlab仿真分析

合集下载

基于Matlab的DFT及FFT频谱分析

基于Matlab的DFT及FFT频谱分析

基于Matlab的DFT及FFT频谱分析基于Matlab的DFT及FFT频谱分析一、引言频谱分析是信号处理中的重要任务之一,它可以揭示信号的频率特性和能量分布。

离散傅里叶变换(DFT)及快速傅里叶变换(FFT)是常用的频谱分析工具,广泛应用于许多领域。

本文将介绍通过Matlab进行DFT及FFT频谱分析的方法和步骤,并以实例详细说明。

二、DFT及FFT原理DFT是一种将时域信号转换为频域信号的离散变换方法。

它将信号分解成若干个正弦和余弦函数的叠加,得到频率和幅度信息。

FFT是一种高效的计算DFT的算法,它利用信号的对称性和周期性,将计算复杂度从O(N^2)降低到O(NlogN)。

FFT通过将信号分解成不同长度的子序列,递归地进行计算,最终得到频谱信息。

三、Matlab中的DFT及FFT函数在Matlab中,DFT及FFT可以通过内置函数进行计算。

其中,DFT使用函数fft,FFT使用函数fftshift。

fft函数可直接计算信号的频谱,fftshift函数对频谱进行频移操作,将低频移到频谱中心。

四、Matlab中DFT及FFT频谱分析步骤1. 读取信号数据首先,将待分析的信号数据读入到Matlab中。

可以使用内置函数load读取文本文件中的数据,或通过自定义函数生成模拟信号数据。

2. 时域分析通过plot函数将信号数据在时域进行绘制,以观察信号的波形。

可以设置合适的坐标轴范围和标签,使图像更加清晰。

3. 信号预处理针对不同的信号特点,可以进行预处理操作,例如去除直流分量、滤波等。

这些操作可提高信号的频谱分析效果。

4. 计算DFT/FFT使用fft函数计算信号数据的DFT/FFT,并得到频谱。

将信号数据作为输入参数,设置采样频率和点数,计算得到频谱数据。

5. 频域分析通过plot函数将频谱数据在频域进行绘制,观察信号的频率特性。

可以设置合适的坐标轴范围和标签,使图像更加清晰。

6. 结果解读根据频谱图像,分析信号的频率成分、幅度分布和峰值位置。

MATLAB信号处理仿真实验

MATLAB信号处理仿真实验

MATLAB信号处理仿真实验1. 引言信号处理是一种广泛应用于各个领域的技术,它涉及到对信号的获取、处理和分析。

MATLAB是一种强大的数学软件,提供了丰富的信号处理工具箱,可以用于信号处理的仿真实验。

本文将介绍如何使用MATLAB进行信号处理仿真实验,并提供详细的步骤和示例。

2. 实验目的本实验旨在通过MATLAB软件进行信号处理仿真,以加深对信号处理原理和算法的理解,并掌握使用MATLAB进行信号处理的基本方法和技巧。

3. 实验步骤3.1 生成信号首先,我们需要生成一个待处理的信号。

可以使用MATLAB提供的信号生成函数,如sine、square和sawtooth等。

以生成一个正弦信号为例,可以使用以下代码:```MATLABfs = 1000; % 采样频率t = 0:1/fs:1; % 时间向量f = 10; % 信号频率x = sin(2*pi*f*t); % 生成正弦信号```3.2 添加噪声为了更真实地摹拟实际信号处理场景,我们可以向生成的信号中添加噪声。

可以使用MATLAB提供的随机噪声生成函数,如randn和awgn等。

以向生成的信号中添加高斯白噪声为例,可以使用以下代码:```MATLABSNR = 10; % 信噪比y = awgn(x, SNR); % 向信号中添加高斯白噪声```3.3 进行滤波处理滤波是信号处理中常用的一种技术,用于去除信号中的噪声或者提取感兴趣的频率成份。

可以使用MATLAB提供的滤波函数,如fir1和butter等。

以设计并应用一个低通滤波器为例,可以使用以下代码:```MATLABorder = 10; % 滤波器阶数cutoff = 0.1; % 截止频率b = fir1(order, cutoff); % 设计低通滤波器filtered_y = filter(b, 1, y); % 应用滤波器```3.4 进行频谱分析频谱分析是信号处理中常用的一种技术,用于分析信号的频率成份。

MATLAB中FFT的使用方法(频谱分析)

MATLAB中FFT的使用方法(频谱分析)

说明:以下资源来源于《数字信号处理的MATLAB实现》万永革主编一.调用方法X=FFT(x);X=FFT(x,N);x=IFFT(X);x=IFFT(X,N)用MATLAB进行谱分析时注意:(1)函数FFT返回值的数据结构具有对称性。

例:N=8;n=0:N-1;xn=[4 3 2 6 7 8 9 0];Xk=fft(xn)→Xk =39.0000 -10.7782 + 6.2929i 0 - 5.0000i 4.7782 - 7.7071i 5.0000 4.7782 + 7.7071i 0 + 5.0000i -10.7782 - 6.2929iXk与xn的维数相同,共有8个元素。

Xk的第一个数对应于直流分量,即频率值为0。

(2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。

在IFFT时已经做了处理。

要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。

二.FFT应用举例例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。

采样频率fs=100Hz,分别绘制N=128、1024点幅频图。

clf;fs=100;N=128; %采样频率和数据点数n=0:N-1;t=n/fs; %时间序列x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求得Fourier变换后的振幅f=n*fs/N; %频率序列subplot(2,2,1),plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=128');grid on;subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=128');grid on;%对信号采样数据为1024点的处理fs=100;N=1024;n=0:N-1;t=n/fs;x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求取Fourier变换的振幅f=n*fs/N;subplot(2,2,3),plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=1024');grid on;subplot(2,2,4)plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=1024');grid on;运行结果:fs=100Hz,Nyquist频率为fs/2=50Hz。

matlab对时域数据进行fft运算

matlab对时域数据进行fft运算

matlab对时域数据进行fft运算MATLAB(Matrix Laboratory)是一种广泛使用的计算机编程语言和环境,专门用于数值计算、数据分析和可视化。

其中,FFT(快速傅里叶变换)是一种常用的数值算法,用于将时域信号转换为频域信号。

在本文中,我们将详细介绍如何使用MATLAB对时域数据进行FFT运算,并解释其中的每个步骤。

第一步:准备时域数据在进行FFT运算之前,首先需要准备一组时域数据。

时域数据通常是一个一维数组,其中包含了一段时间内的信号强度值。

例如,我们可以考虑一个声音信号的例子。

假设我们有一个.wav文件,其中包含了一段时间内的声音波形。

我们可以使用MATLAB的声音处理工具箱来读取.wav文件,并将波形数据存储在一个变量中。

matlab[y, fs] = audioread('sound.wav');在上述代码中,`y`是一个包含了声音波形数据的一维数组,`fs`是声音的采样率(每秒采样的样本数)。

请确保将.wav文件放置在MATLAB的当前工作目录下,或者提供完整的文件路径。

第二步:对时域数据应用窗函数在进行FFT之前,通常需要对时域数据应用窗函数。

窗函数可以减少频谱泄漏效应,并提高频谱分辨率。

在MATLAB中,有多种窗函数可供选择,如矩形窗、汉宁窗等。

以汉宁窗为例,我们可以使用以下代码将窗函数应用于时域数据。

matlabwindow = hann(length(y));y_windowed = y .* window;在上述代码中,`hann(length(y))`生成了一个与时域数据长度相同的汉宁窗。

`y .* window`将窗函数应用于时域数据,得到窗函数加权后的时域数据。

第三步:进行FFT运算在对时域数据应用窗函数之后,我们可以使用MATLAB中的`fft`函数执行FFT运算。

下面的代码演示了如何执行基础的FFT运算,并获取频域信号数据。

matlabY = fft(y_windowed);在上述代码中,`fft(y_windowed)`计算了窗函数加权的时域数据的FFT,并将结果存储在变量`Y`中。

FFT详解及MATLAB仿真

FFT详解及MATLAB仿真

FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。

有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。

这就是很多信号分析采用FFT变换的原因。

另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。

现在圈圈就根据实际经验来说说FFT结果的具体物理意义。

一个模拟信号,经过ADC采样之后,就变成了数字信号。

采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此罗嗦了。

采样得到的数字信号,就可以做FFT变换了。

N个采样点,经过FFT之后,就可以得到N个点的FFT结果。

为了方便进行FFT 运算,通常N取2的整数次方。

假设采样频率为Fs,信号频率F,采样点数为N。

那么FFT之后结果就是一个为N点的复数。

每一个点就对应着一个频率点。

这个点的模值,就是该频率值下的幅度特性。

具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。

而第一个点就是直流分量,它的模值就是直流分量的N倍。

而每个点的相位呢,就是在该频率下的信号的相位。

第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。

例如某点n所表示的频率为:Fn=(n-1)*Fs/N。

由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。

1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。

matlab simulink 傅里叶变换-概述说明以及解释

matlab simulink 傅里叶变换-概述说明以及解释

matlab simulink 傅里叶变换-概述说明以及解释1.引言1.1 概述概述:傅里叶变换是一种重要的信号处理工具,在数字信号处理领域有着广泛的应用。

通过将信号从时域转换到频域,可以方便地分析信号的频谱特性,从而实现信号滤波、频谱分析、频率识别等功能。

Matlab Simulink 是一款强大的仿真工具,提供了丰富的信号处理函数和模块,可以方便地进行傅里叶变换的仿真和分析。

本文将介绍Matlab Simulink中傅里叶变换的基本原理和应用方法,帮助读者更好地理解和使用这一信号处理工具。

1.2 文章结构文章结构部分:本文主要分为引言、正文和结论三部分。

在引言部分中,将对Matlab Simulink 傅里叶变换进行概述,介绍文章的结构和目的。

在正文部分中,将首先介绍Matlab Simulink的基本概念和简介,然后详细阐述傅里叶变换的原理,最后探讨在Matlab Simulink中如何应用傅里叶变换。

在结论部分中,将对整篇文章进行总结,并展望傅里叶变换在未来的应用前景,最后以一段结束语作为结尾。

整个文章结构严谨,内容完整,希望读者能够从中获得有益的启发和知识。

1.3 目的:本文旨在探讨Matlab Simulink中傅里叶变换的应用。

通过介绍Matlab Simulink简介和傅里叶变换原理,以及实际应用中的案例分析,旨在帮助读者深入了解傅里叶变换在信号处理领域的重要性和实际应用价值。

同时,通过本文的学习,读者可以掌握在Matlab Simulink中进行傅里叶变换的方法,提高信号处理的效率和准确性。

最终目的是让读者能够运用所学知识解决实际问题,拓展傅里叶变换在工程实践中的应用范围。

2.正文2.1 Matlab Simulink简介Matlab Simulink是MathWorks公司推出的一款专业的仿真和建模工具,它结合了Matlab编程语言和Simulink建模环境,提供了一种方便快捷的方式来进行系统建模、仿真和分析。

用MATLAB进行FFT谐波分析

用MATLAB进行FFT谐波分析

FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。

有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。

这就是很多信号分析采用FFT变换的原因。

另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。

现在就根据实际经验来说说FFT结果的具体物理意义。

一个模拟信号,经过ADC采样之后,就变成了数字信号。

采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此罗嗦了。

采样得到的数字信号,就可以做FFT变换了。

N个采样点,经过FFT之后,就可以得到N个点的FFT结果。

为了方便进行FFT运算,通常N取2的整数次方。

假设采样频率为Fs,信号频率F,采样点数为N。

那么FFT之后结果就是一个为N点的复数。

每一个点就对应着一个频率点。

这个点的模值,就是该频率值下的幅度特性。

具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。

而第一个点就是直流分量,它的模值就是直流分量的N倍。

而每个点的相位呢,就是在该频率下的信号的相位。

第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。

例如某点n所表示的频率为:Fn=(n-1)*Fs/N。

由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs 为1024Hz,采样点数为1024点,则可以分辨到1Hz。

1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。

用matlab进行fft谐波分析

用matlab进行fft谐波分析

FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。

有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。

这就是很多信号分析采用FFT变换的原因。

另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT之后的结果是什意思、如何决定要使用多少点来做FFT。

现在就根据实际经验来说说FFT结果的具体物理意义。

一个模拟信号,经过ADC采样之后,就变成了数字信号。

采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此罗嗦了。

采样得到的数字信号,就可以做FFT变换了。

N个采样点,经过FFT之后,就可以得到N个点的FFT结果。

为了方便进行FFT运算,通常N取2的整数次方。

假设采样频率为Fs,信号频率F,采样点数为N。

那么FFT之后结果就是一个为N点的复数。

每一个点就对应着一个频率点。

这个点的模值,就是该频率值下的幅度特性。

具体跟原始信号的幅度有什么关系呢?假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A的N/2倍。

而第一个点就是直流分量,它的模值就是直流分量的N倍。

而每个点的相位呢,就是在该频率下的信号的相位。

第一个点表示直流分量(即0Hz),而最后一个点N的再下一个点(实际上这个点是不存在的,这里是假设的第N+1个点,也可以看做是将第一个点分做两半分,另一半移到最后)则表示采样频率Fs,这中间被N-1个点平均分成N等份,每个点的频率依次增加。

例如某点n所表示的频率为:Fn=(n-1)*Fs/N。

由上面的公式可以看出,Fn所能分辨到频率为为Fs/N,如果采样频率Fs为1024Hz,采样点数为1024点,则可以分辨到1Hz。

1024Hz的采样率采样1024点,刚好是1秒,也就是说,采样1秒时间的信号并做FFT,则结果可以分析到1Hz,如果采样2秒时间的信号并做FFT,则结果可以分析到0.5Hz。

MATLAB 频谱分析(FFT FT定义法)

MATLAB 频谱分析(FFT FT定义法)
X1=x1(:,1);%双声道降维
X2=zeros(N/16,1);%只采样64点
for n=1:N/16
for m=1:length(X1)/2 %数据量太大显示太慢只取一半作分析
X2(n,1)=X2(n,1)+X1(m,1)*exp(-j*n*m);%将w与n同步以便于计算存储,w,n关系也可以变
subplot(244);
plot(f(1:N/2),ph(1:N/2));
xlabel('频率/Hz'),ylabel('相角'),title('录音信号相位谱');
%%%%%%%%%%%%%%%%%%录音信号FFT后频谱
subplot(245);
plot(y1)%采样后信号的FFT频谱图
title('录音信号FFT频谱图')
%%%%%%%%%%%%%%%%%%录音信号FFT后幅度
subplot(246);
plot(f(1,N/2)abs(y1(N/2)))%采样后信号的FFT幅度谱,不指定横坐标无意义请注意
title('录音信号FFT幅度谱')
%%%%%%%%%%%%%%%%%%%录音信号随频率变化的相位
ph=2*angle(y1(1:N/2));
ph=ph*180/pi;
subplot(247);
plot(f(1:N/2),ph(1:N/2));
xlabel('频率/Hz'),ylabel('相角'),title('录音信号FFT相位谱');
%%%%%%%%%%%%%%%%%%%由定义得出的FT

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

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;。

用MATLAB进行FFT频谱分析

用MATLAB进行FFT频谱分析

用MATLAB进行FFT频谱分析假设一信号:()()292.7/2cos1.0996.2/2sin1.06.0+++=ttRππ画出其频谱图。

分析:首先,连续周期信号截断对频谱的影响。

DFT变换频谱泄漏的根本原因是信号的截断。

即时域加窗,对应为频域卷积,因此,窗函数的主瓣宽度等就会影响到频谱。

实验表明,连续周期信号截断时持续时间与信号周期呈整数倍关系时,利用DFT变换可以得到精确的模拟信号频谱。

举一个简单的例子:()ππ2.0100cos+=tY其周期为。

截断时不同的持续时间影响如图一.1:(对应程序)140.0160.0180.02截断时,时间间期为周期整数倍,频谱图0.0250.0320406080100截断时,时间间期不为周期整数倍,频谱图图错误!文档中没有指定样式的文字。

.1其次,采样频率的确定。

根据Shannon 采样定理,采样带限信号采样频率为截止频率的两倍以上,给定信号的采样频率应>1/,取16。

再次,DFT 算法包括时域采样和频域采样两步,频域采样长度M 和时域采样长度N 的关系要符合M ≧N 时,从频谱X(k)才可完全重建原信号。

实验中信号R 经采样后的离散信号不是周期信号,但是它又是一个无限长的信号,因此处理时时域窗函数尽量取得宽一些已接近实际信号。

实验结果如图一.2:其中,0点位置的冲激项为直流分量造成(对应程序为)0204060801001201401601802000.40.50.60.70.800.050.10.150.20.250.30.350.40.450.550100150图 错误!文档中没有指定样式的文字。

.2♣ARMA (Auto Recursive Moving Average )模型:将平稳随机信号x(n)看作是零均值,方差为σu 2的白噪声u(n)经过线性非移变系统H(z)后的输出,模型的传递函数为()()()∑∑=-=-+==Pk kk Qr r rza zb z A z B z H 111用差分方程表示为()()()∑∑==-+--=Qr r P k k r n u b k n x a n x 01AR (Auto Recursive )自回归模型,即ARMA 模型中系数b 只有在r=0的情况下为1,其余都是零,获得一个全极点模型:()()()∑=-+==Pk kk za z A z B z H 111差分方程表示为:()()()n u k n x a n x Pk k +--=∑=1AR 模型的功率谱估计为:()()()Ω-ΩΩ=j j uj x e A e A eS 12σ程序:%%------------------------------------------------------------------------%%功能:利用MATLAB 的FFT 函数做双正弦信号频谱分析 %%------------------------------------------------------------------------ fs=16; t=0:1/fs:200;x6=+sin(2*pi*t/*+cos(2*pi*t/+2)*;subplot(2,1,1);plot(t,x6);N=length(t);subplot(212);plot((-N/2:N/2-1)*fs/N,abs(fftshift(fft(x6,N)))) %绘制信号的频谱,横轴对应实际频率axis([0 0 160]);例子:%%------------------------------------------------------------------------%%功能:连续周期信号截断对频谱的影响%%------------------------------------------------------------------------fs=8000;n1=;n=0:1/fs:n1;n=n(1,1:end-1);N=length(n);y=cos(100*pi*n+*pi);subplot(2,2,1);plot(n,y);title('函数y=cos(100{\pi}t+{\pi})');subplot(2,2,2);stem((-N/2:N/2-1)*fs/N,abs(fftshift(fft(y,N))));axis([0 1000 0 100]);grid on;title('截断时,时间间期为周期整数倍,频谱图');n1=;n=0:1/fs:n1;n=n(1,1:end-1);N=length(n);y=cos(100*pi*n+*pi);subplot(2,2,3);plot(n,y);title('函数y=cos(100{\pi}t+{\pi})');subplot(2,2,4);stem((-N/2:N/2-1)*fs/N,abs(fftshift(fft(y,N))));axis([0 1000 0 100]);grid on;title('截断时,时间间期不为周期整数倍,频谱图');。

matlab的fft用法

matlab的fft用法

matlab的fft用法FFT是离散傅立叶变换的快速算法,可以将一个信号变换到频域。

有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。

这就是很多信号分析采用FFT变换的原因。

另外,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。

虽然很多人都知道FFT是什么,可以用来做什么,怎么去做,但是却不知道FFT 之后的结果是什意思、如何决定要使用多少点来做FFT。

一个模拟信号,经过ADC采样之后,就变成了数字信号。

采样定理告诉我们,采样频率要大于信号频率的两倍,这些我就不在此罗嗦了。

采样得到的数字信号,就可以做FFT变换了。

N 个采样点,经过FFT之后,就可以得到N个点的FFT结果。

为了方便进行FFT运算,通常N取2的整数次方。

二、计算序列的FFT变换求序列{2,3,3,2}的DFT变换。

>> N=4;>> n=0:N-1;>> xn=[2 3 3 2];>> xk=fft(xn)运算结果如下:xk =10.0000 + 0.0000i -1.0000 - 1.0000i 0.0000 + 0.0000i -1.0000 + 1.0000i带入公式检验:X [ k ] = ∑ n = 0 N − 1 X [ n ] W N n k X[k]=\sum_{n=0}^{N-1}X[n]W_N^{nk} X[k]=n=0∑N−1X[n]WNnkX [ 0 ] = 2 W 4 0 + 3 W 4 0 + 3 W 4 0 + 2 W 4 0 = 10X[0]=2W_4^{0}+3W_4^{0}+3W_4^{0}+2W_4^{0}=10 X[0]=2W40 +3W40+3W40+2W40=10X [ 1 ] = 2 W 4 0 + 3 W 4 1 + 3 W 4 2 + 2 W 4 3 = − 1 − i X[1]=2W_4^{0}+3W_4^{1}+3W_4^{2}+2W_4^{3}=-1-iX[1]=2W40+3W41+3W42+2W43=−1−iX [ 2 ] = 2 W 4 0 + 3 W 4 2 + 3 W 4 4 + 2 W 4 6 = 0X[2]=2W_4^{0}+3W_4^{2}+3W_4^{4}+2W_4^{6}=0 X[2]=2W40+3W42+3W44+2W46=0X [ 3 ] = 2 W 4 0 + 3 W 4 3 + 3 W 4 6 + 2 W 4 9 = − 1 + i X[3]=2W_4^{0}+3W_4^{3}+3W_4^{6}+2W_4^{9}=-1+iX[3]=2W40+3W43+3W46+2W49=−1+i公式运算结果与matlab仿真结果一致。

基于FFT的傅里叶光谱Matlab仿真分析

基于FFT的傅里叶光谱Matlab仿真分析

第32卷第1期吉首大学学报(自然科学版)Vol.32No .12011年1月Journ al of Ji shou Universit y (Nat ural Science Edit ion)J an.2011文章编号:1007-2985(2011)01-0049-03基于FFT 的傅里叶光谱Matlab 仿真分析*叶伏秋(吉首大学物理科学与信息工程学院,湖南吉首416000)摘要:采用迈克尔逊干涉装置测定了钠光灯和汞灯的干涉图,利用傅里叶光谱中存在的干涉图和光谱图的变换关系,通过快速傅里叶变换(F FT)的方法分析了钠光灯和汞灯的辐射光谱.Matlab 仿真分析结果表明,采用傅里叶变换光谱可以清晰地展现辐射源的辐射光谱.关键词:傅里叶光谱;快速傅里叶变换;调制;解调中图分类号:O433.4文献标志码:A测量信号可以采用2种不同方法:时域测量和频域测量,时域测量用示波器来显示信号的波形,在示波器上可以直接读取脉冲的上升时间、脉冲宽度、相位差等信号信息.这种测量方式使用得最广泛,但这种方式对一些信号中的一些细节如很小的失真一般都很难观察得到.这时对于被测对象,也可以测量它在不同频率时的频率特性,这种测量方式称为频域测量.对在频域测量中得到的频谱进行分析,往往能够提供在时域测量中进行分析所观察不到的信息,甚至有些系统必须进行频谱分析.因此,在许多地方频谱分析显得更为重要,通常频谱分析是以快速傅里叶变换为基础.现代光学的一个重大进展是在光学中引入傅里叶变换概念,由此发展成为光学领域内的一个崭新分支傅里叶光学.傅里叶光学采用通信和信息理论中的傅里叶分析和线性系统理论方法,在二维空间域及其空间频率域讨论光学系统的特性[1].利用傅里叶光谱中存在的干涉图和光谱图的变换关系,可以通过傅里叶变换的方法测定并分析各种辐射光谱.Matlab 作为一种高效方便的科学计算软件被广泛的应用在各种计算领域[2],其将高性能的数值计算和可视化集成在一起,并内置了大量的函数库,特别是快速傅里叶变换F FT ,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作.笔者通过利用迈克尔干涉装置测定钠光灯和汞灯的干涉图,然后采用Matlab 中的F FT 计算并分析出钠光灯和汞灯的辐射光谱.1快速傅里叶变换FFT傅立叶变换是信号分析和处理的重要工具,离散时间信号f (t)的连续傅立叶变换定义为[3]F (e j t )=N -1t=0f (t)e i t .(1)其中F (e j t )是一个连续函数,不能直接在计算机上做数值运算.为了在计算机上实现频谱分析,必须对f (t)的频谱作离散近似.有限长离散信号f (t)的离散傅立叶变换(DFT)定义为F (v)=N-1N-1t=0f (t)e -j2(v /N)t ,(2)其反变换定义为f (t)=N-1t=0F (v)e j2(v/N )t ,(3)其中t =0,1,2,,N - 1.1965年Cooley 和T ukey 巧妙地利用e -j2(v /N)t 因子的周期性和对称性,经过适当数学变换,提出了DFT 的快速算法,即*收稿日期6基金项目湖南省普通高等学校科学研究项目();湖南省普通高等学校教学改革研究资助项目作者简介叶伏秋(6),男,湖南益阳人,吉首大学物理科学与信息工程学院副教授,硕士,主要从事物理学研究:2010-10-1:10A100:197-.快速离散傅里叶变换.此后FFT 算法被广泛运用于各种计算领域.2傅里叶光谱分析傅里叶变换光谱技术[4]是利用迈克尔逊干涉仪对入射光进行干涉调制,采用探测器把干涉信号转换为电信号,经A/D 转换,成为数字化的时域干涉图,它与入射光的光谱图之间存在傅里叶变换关系,通过对干涉图实施傅里叶逆变换,就可获得入射光的光谱信息.傅里叶变换过程实际上就是对待测光进行调制与解调的过程,通过调制将待测光的高频率调制成可以掌控、接收的频率,然后将接收到的信号送到解调器中进行分解,得出待测光中的频率成分及各频率对应的强度值.这样就得到了待测光的光谱图.调制过程由迈克尔孙干涉仪实现,设一单色光进入干涉仪后,它将被分成2束后进行干涉,干涉后的光强值为I (x)=I 0cos 2x ,(4)其中:x 为光程差,它随动镜的移动而变化;为单色光的波数值.如果待测光为连续光谱,那么干涉后的光强为I (x)=+-I ()cos 2x d .(5)采集待测光的干涉强度信息的装置如图1,分别用钠光灯和汞灯作为待测光源,测得干涉图如图2,3所示.1-外置光源;2-内置光源(溴钨灯);3-可变光栏;4-准直镜;5-平面反射镜;6-精密平移台;7-电机;8-动镜;9-干涉板;-补偿板;11-定镜;12-接收器1;13-参考光源(H e Ne 激光器);14-分束器;15-平面反射镜;16-接收器2;17-光源转换镜(物镜)图1采集待测光的干涉强度信息的迈克尔逊干涉装置图2钠光灯干涉图从接收器上采集到的数据送入计算机中,利用Mat lab 中的F FT 进行数据处理得到傅里叶光谱即解调.傅里叶光谱满足的方程就是解调方程:I ()=+-I (x)cos 2x dx,(6)该方程就是傅里叶变换光谱学中干涉图-光谱图关系的基本方程.对于给定的波数,如果已知干涉图与光程差的关系式I (x),就可以用解调方程计算这波数处的光谱强度I ()为了获得整个工作波数范围的光谱图,只需对所希望的波段内的每一个波数反复按照解调方程进行傅里叶变换运算就行了图,5分别为用FF T 进行变换得到的钠光灯和汞灯的光谱图从图可以清楚地看到钠光灯辐射的波长大约在550吉首大学学报(自然科学版)第32卷..4.490图3汞灯干涉图nm 附近的双线光谱,而从图5也可以清楚地看到汞灯辐射的波长大约在550nm 附近的光谱.图4钠灯光谱图图5汞灯光谱图3结语FF T 是离散傅里叶变换的快速算法,可以将信号变换到频域,从而在频域中可以很清晰地展现信号在时域上很难看到的一些特征.同时F FT 也可以将一个信号的频谱提取出来以便于进行频谱分析.因此,FF T 在各种信号处理中得到了广泛使用.在本文中,笔者分别把钠光灯和汞灯的辐射光入射到迈克尔逊干涉装置中进行干涉调制,得到时域干涉图,然后使用FFT 对干涉图进行傅里叶变换,得到了2种光源的辐射光谱图,在光谱图中可以清楚地看到了2种光源辐射的光波波长.参考文献:[1]吕乃光.傅里叶光学[M].北京:机械工业出版社,2006:44.[2]宋兆基.MAT LAB 6.5在科学计算中的应用[M].北京:清华大学出版社,2005:2- 3.[3]殷勤业.傅里叶变换及其应用[M].张建国译.西安:西安交通大学出版社,2005:203-217.[4]沈学础.傅里叶变换光谱学引论和进展[J].物理学进展,1982(3):1- 5.(下转第62页)51第1期叶伏秋:基于FF T 的傅里叶光谱Matlab 仿真分析62吉首大学学报(自然科学版)第32卷[24]LI Xiao hua.Energy Efficient Wir eless Sensor Networ ks with Tr ansmission Diversit y[J].IEE Elect ronics Letter s,2003,39:1753-1755.[25]Zhanshan(Sam)MA.Insect Population Inspir ed Wireless Sensor Networ ks:A U nified Ar chit ecture with Survival Analysis,Evolut ionar y Game Theory,and Hybrid F ault Models[C]//International Conference on Bio Medical Engineer ing and Infor matics.China:H ainan,2008.[26]M A Yi zhong,CAO H ui,MA Jun.T he Intrusion Detect ion Method based on Game Theory in Wir eless Sensor Networ k[C]//Ubi Media Computing,2008Fir st IEEE Inter national Conference.China:Beijing,2008:326-331.[27]SANG SEON BYU N.Dynamic Spectr um Allocation in Wireless Cognitive Sensor Networ ks:Improving Fa irness andEner gy Efficiency[C]//T he68th IEEE Vehicular Technology Confer ence.Canada:Calgar y,2008:1- 5.Key Technologies and Evolution in Wireless Sensor Network Data GatheringLIANG Ping yuan1,2,CH EN Bing quan1,3,TAN Zi you1(1.College of P hysics Science and Infor mat ion Engineering,Jishou Univer sity,Jishou416000,China;2.School of I nformation Science and Technology,Sun Yat sen University,Guangzhou510006,China;3.College of Electricity and Information Engineer ing,Hunan University,Changsha410082,China)Abstr act:Because of the self organization network structur e,wir eless sensor networ k(WSN)data gath ering has enormous advantages compared with other networks.H owever,many key problems have not been resolved in wireless sensor networks yet because of limited resources.In this paper,the key technol ogy and main challenges in WSN data gathering are summarized,and the main per for mance index and re search methods of WSN network protocols in data gathering ar e introduced.At the same time,several new technology combined with WSN are analyzed and discussed.In the end,the research direction in the future is prospected.Key words:wireless sensor networks;summary;data gathering;MIMO(责任编辑陈炳权) (上接第51页)Matlab Simulation Analysis of Fourier Spectrum Based on FFTYE Fu qiu(College of Physics Science and Infor mation Engineer ing,Jishou University,Jishou416000,H unan China)Absttract:T he interference pattern of the sodium lamp light and the mercury lamp light is measur eed by Michael interference device,using the tr ansformation relations of the interference pattern and the spectra which exist in Four ier spectr um,the sodium lamp and mercury lamp radiation spectrum is analyzed by fast Fourier transform method.T he results show that the Fourier transfor m spectrum can clearly display the r adiation spectrum of the radiation source.Key words:Fourier spectrum;fast Fourier transform;modulation;demodulation(责任编辑陈炳权)。

基于MATLAB仿真分析频谱信号的误差

基于MATLAB仿真分析频谱信号的误差

时域信号经过FFT 变换后可以得到信号在频域的频率分布和相应的幅值信息,在频域中只需要关注特定频率的信号,可以有效排除其他频率信号的干扰,从而利用频谱信息恢复出该频率的时域信号。

因此,频谱的信息准确与否会影响到恢复的时域信号。

本文利用MATLAB 软件,从时域正弦信号的初相位和采样频率出发,对FFT 变换后的频域信息误差进行了仿真分析。

1时域与频域信息之间的相互转换对于时域信号,如正弦信号y=Asin (2πft+ψ)+B ,其直流分量为B ,交流分量的幅值为A 、频率为f ,初始相位为ψ。

当模拟信号转化为数字信号时需要进行采样,采样频率f s 需满足采样定理,即f s >2f 。

对于采集的N 点序列,离散傅里叶变换(DFT )公式如下[1]:X (k )=N-1n =0∑x n e-2πNkn (k=0,1,…,N-1)(1)可由欧拉公式变形为:X (k )=N-1n =0∑x (n )(cos (2πkn N )-isin (2πkn N ))(2)X (k )=N-1n =0∑x (n )cos (2πkn N )-i N-1n =0∑x (n )sin (2πkn N )(k=0,1,…,N-1)(3)通过以上公式计算可以得到N 点序列的DFT 结果,从而得到信号在频域的信息。

本文在MATLAB 软件中使用的是FFT 算法。

FFT 是一种实现DFT 的快速算法,其采用分而治之的思想,利用复数形式的离散傅里叶变换来计算实数形式的离散傅里叶变换,使DFT 的计算量降低了一个或几个数量级,使得DFT 得到广泛的应用[2]。

从频域到时域的转换可以通过对频谱信息进行相应的计算得到。

以下以正弦信号y=2sin (2π×2000t+14π)+3为例,图1a为该信号的时域波形,图1b 为该信号的频谱。

该信号在时域的信息有:直流分量B=3,交流分量幅值A=2,频率f=2000Hz ,初相位ψ=14π。

利用matlab进行信号和系统的复频域分析心得

利用matlab进行信号和系统的复频域分析心得

利用matlab进行信号和系统的复频域分析心得
利用MATLAB进行信号和系统的复频域分析是非常常见的。

下面是一些心得和步骤供参考:
1. 导入信号数据:首先,你需要将信号数据导入到MATLAB中。

这可以通过多种方式实现,例如读取文件或直接生成信号矩阵。

2. 选择合适的频域分析方法:根据你的需求和信号类型,选择合适的频域分析方法。

常见的方法包括傅里叶变换、快速傅里叶变换(FFT)、离散傅里叶变换(DFT)等。

3. 执行频域分析:使用MATLAB提供的相应函数,如fft()或fftshift()来执行频域分析。

这将为你提供信号的频谱信息。

4. 绘制频谱图:使用MATLAB的绘图函数,如plot()或stem(),将频谱数据可视化为频谱图。

你可以选择线性频谱图或对数频谱图,具体取决于信号特性和需求。

5. 分析频谱信息:根据频谱图,你可以分析信号的频率分量、幅度特性以及相位特性。

对于系统分析,你还可以计算系统的传递函数。

6. 系统设计和优化:根据频域分析结果,你可以对系统进行设计和优化。

例如,你可以确定降噪滤波器的截止频率,或者针对特定的频率范围进行信号增强。

需要注意的是,MATLAB提供了丰富的信号处理和系统分析工具箱,可以帮助你更轻松地完成复频域分析任务。

同时,请确保使用合法授权的软件和工具,遵守中国法律政策。

matlabfft函数用法

matlabfft函数用法

matlabfft函数用法FFT(Fast Fourier Transform)在Matlab中是一个非常常用的函数,用于对一个离散时间域信号进行频域分析。

在Matlab中,fft函数用于执行快速傅里叶变换。

下面将详细介绍Matlab中fft函数的用法。

1.FFT函数的语法:Y = fft(X)Y = fft(X,n)Y = fft(X,n,dim)其中,X表示输入的离散时间域信号,可以是一个向量或一个矩阵;n是可选参数,表示指定的FFT长度,默认为输入信号的长度;dim是可选参数,表示指定进行FFT的维度,默认为第一个非单例维。

2.FFT函数的输出:FFT函数的输出为一个复数矩阵,表示输入信号的频域表示。

输出矩阵的大小与输入信号的维度一致。

3.FFT函数的常用参数:-X:表示输入的离散时间域信号,可以是一个向量或一个矩阵。

- n:可选参数,表示指定的FFT长度,默认为输入信号的长度。

当输入信号的长度大于n时,fft函数会对输入信号进行截取;当输入信号的长度小于n时,fft函数会进行零填充。

- dim:可选参数,表示指定进行FFT的维度,默认为第一个非单例维。

-Y:输出的复数矩阵,表示输入信号的频域表示。

4.FFT函数的应用:FFT函数可用于频谱分析、滤波、信号压缩、波形合成等多个领域。

-频谱分析:通过FFT函数,可以将时域的信号转换为频域的信号,进而对信号的频谱进行分析。

可以通过查看频谱图,了解信号的频率成分和能量分布情况,从而判断信号的特性。

-滤波:在频域进行滤波是一种常用的滤波方法。

将信号转换到频域后,可以通过挑选特定的频率成分,来实现滤波操作。

例如,可以通过将除了感兴趣频率范围内的成分都置零,实现低通滤波或高通滤波。

-压缩信号:FFT可以用于对信号进行压缩。

通过去除信号中能量较低的频率成分,可以实现信号的压缩,减小信号所需存储的空间。

-波形合成:FFT函数可以将不同频率的信号成分合成一个复合波形。

MATLAB中FFT的使用方法

MATLAB中FFT的使用方法

MATLAB中FFT的使用方法一.调用方法X=FFT(x);X=FFT(x,N);x=IFFT(X);x=IFFT(X,N)用MATLAB进行谱分析时注意:(1)函数FFT返回值的数据结构具有对称性。

例:N=8;n=0:N-1;xn=[4 3 2 6 7 8 9 0];Xk=fft(xn)→Xk =+ 0- - + 0 + -Xk与xn的维数相同,共有8个元素。

Xk的第一个数对应于直流分量,即频率值为0。

(2)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。

在IFFT时已经做了处理。

要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。

二.FFT应用举例例1:x=*sin(2*pi*15*t)+2*sin(2*pi*40*t)。

采样频率fs=100Hz,分别绘制N=128、1024点幅频图。

clf;fs=100;N=128; %采样频率和数据点数n=0:N-1;t=n/fs; %时间序列x=*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求得Fourier变换后的振幅f=n*fs/N; %频率序列subplot(2,2,1),plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=128');grid on;subplot(2,2,2),plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=128');grid on;%对信号采样数据为1024点的处理fs=100;N=1024;n=0:N-1;t=n/fs;x=*sin(2*pi*15*t)+2*sin(2*pi*40*t); %信号y=fft(x,N); %对信号进行快速Fourier变换mag=abs(y); %求取Fourier变换的振幅f=n*fs/N;subplot(2,2,3),plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=1024');grid on;subplot(2,2,4)plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('N=1024');grid on;运行结果:fs=100Hz,Nyquist频率为fs/2=50Hz。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对信号作FFT的一般分析栅栏效应和频谱泄露栅栏效应:离散采样,数字处理造成对频谱的观察只能在有限点上,好像透过栅栏观察景物一样;频谱泄露:对信号的截断加窗,有限时间的信号在频谱上造成一定宽度频谱,从而造成在频谱的其它频率点上出现不应有的谱峰。

采样加窗后实正弦信号的频谱:FFT得到的结果:注意信号的相位z FFT的结果是矢量,有相位信息,但是我们使用更多的是幅度信息,对相位信息容易忽略;z各个信号频率分量的相位决定着信号在时域的具体波形;z FFT频谱中相同频率点上的值是矢量叠加的整数频点采样问题FFT的物理分辨率是采样率 / 采样点数,如果所分析的信号频率为该值的整数倍,那么通过“栅栏”对频谱观察时可以正好看到信号频谱的实在位置,并且观察到sinc函数的过零点(如果补零,要求信号频率为名义分辨率倍数)。

看一下演示:左边各图:1000MHz采样,1000点数据,不同点FFT(末尾补零),10MHz 正弦信号分析右边各图:1000MHz采样,1000点数据,不同点FFT(末尾补零),10.5MHz正弦信号分析1000点FFT8000点FFT8192点FFT一个实例----我的本科毕业设计@2004.Spring功能:测量两路同频率正弦信号的相位差,频率。

原理:对信号采样,在FPGA中进行浮点FFT运算,分别求得两路信号在本次采样过程中的起始相位,再求两相位之差,即为两信号相位差,结果送PIC单片机整理,再显示在LCD上。

图示说明:系统带有幅度,相位差,频率可控的双路DDFS信号发生电路,可用于自闭环测试,评估对系统的性能。

图示为系统对两路486Hz,相位差90度的正弦模拟信号采样分析的结果(包括时域采样波形,频率,相位差),可见FFT对信号的相位分析具有相当高的精度。

分析sinc函数z连续Sinc函数的过零点位置是N/t, N=1,2,3…,或-1,-2,-3,t是矩形脉冲宽度;z离散sinc函数的过零点在k * N/n, k=1,2,3…, 其中N是数据总点数,n是数据不为0的点数,即过零点周期是占空比的倒数,但是极限是占空比50%的情况(占空比20%和80%的数据过零点周期相同,只是直流分量不同,对应频率分量的相位为相反数)。

如果不能整除,将采不到取0的位置例如:当占空比为20%,过零点周期为100/20=5小图中为占空比80%的情况当占空比为10%过零点周期为100/10=10在可整除的占空比情况下,可取到过零点当占空比为15% 不可整除取不到过零点各次谐波的相位呈现线形关系:(图为占空比10%的矩形波)频率分辨率问题CASE1 :通过增长采样时间来提高实际分辨率,即增加物理分辨率,物理分辨率的意义在于衡量FFT 可以区分的频率分量的间隔。

采样率: 1000 MHz采样点数:1000 点FFT点数: 10000 点蓝色: 5MHz 正弦(时域中为1MHz)红色: 6MHz 正弦(时域中为2MHz)黑色:两信号叠加合成效果注意,矩形窗的较大的旁瓣泄露造成叠加合成后两个频率分量的较大落差!并且主瓣峰顶偏离应在位置!-------------------------------通过加窗,压低旁瓣,可以改善。

采样率: 1000 MHz采样点数:2000 点(占空比20%)右图为 8000 点(占空比80%)FFT点数: 10000 点蓝色: 5MHz 正弦(时域中为1MHz)单峰幅度值 10红色: 6MHz 正弦(时域中为2MHz)单峰幅度值 10黑色:两信号叠加合成效果对20%和80%占空比信号分析得到相同“主旁瓣”宽度的理解:理解1: 如前所述,具有互补占空比的数字方波具有相同的过零点周期,只是直流分量不同,相位不同;理解2:数字的sinc是对模拟sinc采样的得到的,如上20%占空比的情况下的数字瓣反映的是真正的模拟瓣,80%情况下的数字瓣是“假的”,它的一个瓣是对多个模拟瓣采样的综合结果。

对从增加采样数据量提高物理分辨率的理解:从本质上讲,增长观察时间相当于在模拟时域增长矩形窗宽度,从而在模拟频率域减小了sinc主旁瓣宽度,减小了相邻频率分量的混叠;CASE2 :如果数据采样点数一定,通过补零,相当于减小了矩形窗的占空比,过零点周期变长,频谱可以看得更加精细,但是并不能减小两个sinc的混叠程度,即不能增加分辨率,增加的是名义分辨率。

名义分辨率是衡量的是FFT对频谱观察的细微程度。

名义分辨率= 采样率 / 分析点数下面四幅图是在相同采样点数下,通过补零作不同点数FFT的结果,参数如上所述的前者(1000采样点)5000点FFT 10000点FFT20000点FFT 40000点FFT结论:补零不能减轻频谱混叠的程度,但是能减轻栅栏效应的影响,把频谱看得更细,对于非整数频点(一般情况)下观察频谱,这是有效的。

如下所示:左图频谱:1000M采样,单峰幅度10,5M正弦,1000点采样(整数频点),2000点FFT,峰值出现在5MHz 右图频谱:5.2M正弦,其他参数不变,峰值出现在 10*1000MHz/2000=5MHz, 误差左图:4K点FFT,峰值位置=21*1000MHz/4000=5.25MHz,误差, 但是减小了。

右图:5K点FFT, 峰值位置=26*1000MHz/5000=5.2MHz, 1000MHz/5000=0.2MHz, 符合!左图:50K点FFT, 右图100K点FFT,峰值均出现在5.2MHz, 5M/5.2M信号频谱峰值有区别,采样造成。

思考分辨率问题一般认为:分辨率 = 采样率 / 数据采样点数数据参数:采样率: 1000 MHz采样点数: 1000 点FFT点数: 10000 点蓝色: 5 MHz, 初始相位 0红色:5.5 MHz, 初始相位 0黑色:两个信号叠加效果结论:频谱混叠,两个信号频率不可分真的分不开吗?不见得!把5.5 MHz信号的初始相位调整为100度,出现两个峰,但是峰顶并不在应在位置。

结论:相同频率上的频谱是矢量合成的!结论:对频率分辨率的理解理解1:当信号频率差小于采样率/采样点数,在频域上,频谱靠得太近,造成混叠,难以分辨。

理解2:在时域上,多个频率合成造成信号周期变长,采样点至少应该保证采完一个新周期。

(对于频谱观察,这是充分的,但并一定必要)数据采样率:1000MHz左图:5MHz 和 5.5MHz 信号叠加,周期变成1000MHz / (5.5MHz – 5MHz) = 2000 右图:1MHz 和 1.2MHz 信号叠加,周期变成1000MHz / (1.2MHz – 1MHz) = 5000加窗问题窗函数特性概览三角窗表达式:波形及其频谱:(取1000点窗函数,作16384点FFT,频谱取10倍常对数幅度值)波形:频谱:前3%频谱:Hanning窗函数表达式:Hamming 窗函数表达式:Blackman 窗函数表达式:Bartlett 窗函数表达式:Kaiser 窗函数表达式:几种常用窗函数的感性比较窗函数1000点,观察频谱的前 1%结论:不同的窗函数,主瓣宽度,旁瓣衰减,过零点周期是不同的,一般来讲,主瓣宽度和旁瓣泄露呈矛盾关系,主瓣宽则旁瓣泄露少。

比较理想的窗函数频谱为矩形,矩形宽度为物理分辨间隔。

但是不能实现时域的无限sinc加窗主瓣:主瓣窄而平坦,有利于克服栅栏效应,有利于计算频率中心旁瓣:没有用处,没有最好尝试“sinc 窗”:上图为窗函数时域图,下图为10MHz正弦(1000M采样,50K点FFT)加“sinc窗”频谱图。

可见,它主瓣太宽,并不太实用,但是频率可以利用计算几何中心得到。

使用窗函数5M/6M 同幅度正弦在1000M 采样,1000点数据,100K 点FFT ,加不同窗函数的效果:矩形窗 三角窗(偏移存在,落差减小)汉宁窗 海明窗矩形窗旁瓣泄露加大,造成两个频率分量难以分辨汉宁窗 海明窗注意:虽然压低了旁瓣,但是同时展宽了主瓣,因此加窗是有代价的,如下图:三角窗 海明窗矩形窗 汉宁窗 布莱克曼窗因此,增加采样点数,增加物理频率分辨率,同时加窗效果才会更好,例如将采样点数增加为4000点。

三角窗 海明窗矩形窗 汉宁窗 布莱克曼窗FFT 改善信噪比下列图示均为100K 点FFT 时,相同正弦和噪声叠加,在不同采样点数对信噪比造成的影响:200点采样 2000点采样20K 点采样 50K 点结论: 增加采样点数时,由于信号的相关性和噪声的不相关性,或者认为,信号样值在频谱中集中,噪声样值在频谱中分散,造成信号频谱增加的能量大于噪声频谱增加的能量,从而信噪比增加,并且增加的信噪比与采样点数成正比,采样点加一倍,信噪比也约增加一倍。

理论上,实正弦N 个采样点在频谱上集中到2点,N 个噪声采样在频谱上散布在N 点,因此信噪比提高N/2倍。

我的学识如此有限,对问题的分析必然存在不足,热切地企盼着你的质疑与指教!自然界的规律如此微妙而优雅,深邃而广袤;今天我只是在沙滩上拾得几枚好看的贝壳,在前方的海底必定还有更多更美的东西沉睡着,等待着我们携手将她发现,为她陶醉。

相关文档
最新文档