当前位置:首页>科技 >内容

matlab和fft的使用教程 fft算法的matlab实现过程详解

2024-05-13 20:26:54科技漂亮的斑马

fft算法的matlab实现过程详解(一)实验目的:了解离散傅里叶变换中信号分析与处理的一个重要变换,尤其是FFT在数字信号处理中的高效应用。(2

matlab和fft的使用教程 fft算法的matlab实现过程详解

fft算法的matlab实现过程详解(一)实验目的:了解离散傅里叶变换中信号分析与处理的一个重要变换,尤其是FFT在数字信号处理中的高效应用。

(2)实验原理:

1、有限长序列x(n)的DFT概念和公式;

2、FFT算法

呼叫格式是

X=fft(x)或X=fft(x.N)

对于前者,如果x的长度是2的整数次幂,则按照这个长度实现x的快速变换,否则实现2以外的整数次幂的慢速变换;对于后者,n应该是2的整数次方。如果x的长度小于n,则填充零;如果超过n,则丢弃n之后的数据。Ifft以相同的格式调用。

(三)实验内容

l,问题-~:如果x(n)=cos(n*pi/6)是N=l2的有限序列,用MATLAB计算一下。

DFT并绘制图表。

源程序:

clc

N=12

N=0:N-1;

k=0:N-1;

xn=cos(n * pi/6);

w=exp(-j * 2 * pi/N);

kn=n'*k

Xk=xn*(W.^kn)

stem( n,Xk);

xlabel(k

ylabel(Xk ');

格里登;

FFT算法也可以直接得到结果,F:

clc

N=l2

N=0:N-1;

xn=cos(n * pi/6);

Xk=fft(xn,N):

stem( n,Xk);

xlabel(k);

ylabel(Xk ');

格里登;

实验结果

实验结果分析:

用DFT和FFT对序列进行运算,最后的结果是一样的。但是快速傅立叶变换的运算速度可以快得多。

2、问题二:一个被噪声污染的信号,很难看到它所包含的频率成分,比如——一个由50HZ和120HZ正弦信号组成的信号,被均值随机噪声干扰,采样率为1000Hz。

对信号的频率成分进行FFT分析,并用MATLAB实现。

源程序:

clc

fs=1000

N=1024

N=0:N-l;

t=n/fs;

x=sin(2 * pi * 50 * t)sin(2 * pi * 120 *[)rand(l,N);

y=fft(x,N);

mag=ABS(y);

f=N t fs/N;

支线剧情(l,2,l),剧情(f,mag);

Xlabel(频率/赫兹');

Ylabel(振幅’);标题(N=102 4);网格打开;

支线剧情(1,2,2),剧情(f( l:N/2),mag(1:N/2);

Xlabel(“频率/赫兹”);

Ylabel(振幅);标题(N=1024);格子

开;

实验结果;

实验结果分析:

使用FFT运算,将序列变换到频域。虽然信号受到平均随机噪声的干扰,但是通过分析频谱可以清楚地看到原始信号的频率,50hz和120hz。

3、问题3:调用原始语音信号mtlb,对其进行FFT变换,去除幅度小于1的FFT,最后重构语音信号。转换值,最后重构语言信号。

(要求在同一个图形窗口中有四个语音信号的频谱图进行对比1、原始语音信号;2、FFT变换;3.去除幅度小于1的FFT变换值;重建语音信号)

源程序:

clc

装载mtlb

%加载数据

N=512

子情节(2,2,l)

plot([ l:N],mtlb(1:N));

标题(属于I-初始语音信号’);网格;

y=ff(mtlb(1:N));

声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们

Top