MATLAB-FFT和IFFT的Matlab实现(幅频响应和相拼响应)

MATLAB-FFT和IFFT的Matlab实现(幅频响应和相拼响应),第1张

一、Matlab的FFT函数

(1)函数的用法

Y = fft(x)

Y = fft(X,n)

Y = fft(X,n,dim)

(2)函数的定义

Y = fft(x) 和 y = ifft(X)分别用于实现正变换和逆变换,公式描述如下:

(3)函数描述

Y = fft(X)

用快速傅里叶变换 (FFT) 算法计算 X 的离散傅里叶变换 (DFT)。

·如果 X 是向量,则 fft(X) 返回该向量的傅里叶变换。

·如果 X 是矩阵,则 fft(X) 将 X 的各列视为棚枯搭向量,并返回每列的傅里叶变换。

·如果 X 是一个多维数组,则 fft(X) 将尺寸大小不等于 1 的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。

注意这里第一个尺寸链拿不为1是指一个矩阵的第一个尺寸不为1的维。

比如一个矩阵是2 1,那么第一个尺寸不为1的维就是行(尺寸为2)。

X是 1 2 3表示第一个尺寸不为1的维就是列(尺寸为2)。

X为维数5 6*2的话,第一个尺寸不为1的维就是行(尺败唯寸为5)。

Y = fft(X, n)

返回 n 点 DFT。如果未指定任何值,则 Y 的大小与 X 相同。

·如果 X 是向量且 X 的长度小于 n,则为 X 补上尾零以达到长度 n。

·如果 X 是向量且 X 的长度大于 n,则对 X 进行截断以达到长度 n。

·如果 X 是矩阵,则每列的处理与在向量情况下相同。

·如果 X 为多维数组,则大小不等于 1 的第一个数组维度的处理与在向量情况下相同。

Y = fft(X, n, dim)

返回沿维度 dim 的傅里叶变换。例如,如果 X 是矩阵,则 fft(X,n,2) 返回每行的 n 点傅里叶变换。

matlab的FFT函数;相关语法:;Y=fft(X);Y=fft(X,n);Y=fft(X,[],dim);Y=fft(X,n,dim);定义如下:;相关的一个例子:;Fs=1000%采样频率;T=1/Fs%采样时间;L=1000%总的采样点数;t=(0:L-1)*T%时间序列(时间轴);%产生一个简晌幅值为0.7频率为50HZ正弦+另外一;y=x+2

matlab的FFT函数

相关语法:

Y=fft(X)

Y=fft(X,n)

Y=fft(X,[],dim)

Y=fft(X,n,dim)

定义如下:

相关的一个例子:

Fs=1000%采样频率

T=1/Fs%采样时间

L=1000%总的采样点数

t=(0:L-1)*T%时间序列(时间轴)

%产生一个幅值为0.7频率为50HZ正弦+另外一个信号的幅值为1频率为120Hz的正弦信号x=0.7*sin(2*pi*50*t)+sin(2*pi*120*t)

y=x+2*randn(size(t))%混入噪声信号

plot(Fs*t(1:50),y(1:50))%画出前50个点

title('SignalCorruptedwithZero-MeanRandomNoise')

xlabel('time(milliseconds)'拦返锋)

NFFT=2^nextpow2(L)%求得最接近总采样点的2^n,这里应该是2^10=1024

Y=fft(y,NFFT)/L%进行fft变换(除以总采样点数,是为了后面精确看出原始信号幅值)f=Fs/2*linspace(0,1,NFFT/2+1)%频率轴(只画到Fs/2即可,由世庆于y为实数,后面一半是对称的)

%画出频率幅度图形,可以看出50Hz幅值大概0.7,120Hz幅值大概为1.

plot(f,2*abs(Y(1:NFFT/2+1)))

title('Single-SidedAmplitudeSpectrumofy(t)')

xlabel('Frequency(Hz)')

ylabel('|Y(f)|')


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12455340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存