MATLAB中的快速傅里叶变换

MATLAB中的快速傅里叶变换

快速傅立叶变换是一种计算任何信号或矢量的离散傅立叶变换的算法。这是通过将信号分解成离散的频率来实现的。我们将不讨论其数学背景,因为这不在本文的范围之内。MATLAB提供了一个内置函数来计算信号的快速傅里叶变换,即FFT函数。

语法:

A = fft(X, n, dim)

其中A存储的是信号X的离散傅里叶变换(DFT),它可以是一个矢量、矩阵或多维数组。n指定X的n点DFT,如果没有指定,则是X的所有点。

让我们看看矢量的实践,因为它们是更实用的信号处理方式。我们将计算一个被一些随机误差破坏的假正弦波的DFT。

示例 1:

% MATLAB code for
% Defining axes for multiple plots
ax1 = axes('Position',[0.1 0.1 0.45 0.45]);
ax2=axes('Position',[0.6 0.6 0.35 0.35]);
 
% Defining signal
freq = 23;                %freq
afreq = 2*pi*freq;        %angular frequency
amp = 0.23;                %amplitude
phase = pi/4;            %phase angle
 
% Time vector
T = linspace(-pi,pi,100);
 
% Creating signal
signal = amp*sin((afreq * T) + phase);
 
% Adding random error in signal
signal = signal + 0.23*random(size(T));
 
% Plotting original signal in axes 1
plot(ax1,T,signal),title(ax1,"Original signal")
 
%computing DFT using Fast Fourier Transform
y=fft(signal);
 
%plotting transformed signal in axes 2
plot(ax2,T,y),title(ax2,"FFT signal")
MATLAB

输出:

MATLAB中的快速傅里叶变换

随机正弦波信号的FFT

让我们再举一个例子,我们将用FFT计算一个矩形脉冲的DFT。

示例 2:

% MATLAB code for
% Defining the pulse
x=linspace(-2.5,2.5,300);
y=rectpuls(x,1);
 
% Computing the DFT using FFT
k=fft(y);
 
% Defining axes for multiple plots
ax1=axes('Position',[0.03 0.03 0.3 0.3]);
ax2=axes('Position',[0.39 0.39 0.5 0.5]);
 
% Plotting original pulse
plot(ax1,x,y)
axis(ax1,[-1 1 -0.1 1.23]),title(ax1,"Rectangular pulse")
 
% Plotting the DFT of the rectangular pulse
plot(ax2,x,k)
axis(ax2,[-1 1 -.9 .9]),title(ax2,"DFT of rectangular pulse")
MATLAB

输出:

MATLAB中的快速傅里叶变换

现在,我们将对一个矩阵进行快速傅里叶变换。

示例 3:

% MATLAB code for  creating a
% matrix of exponential of random numbers
mat = exprnd(1,3);
 
% Calculating its DFT using FFT entire matrix
fft_mat_entire = fft(mat);
 
% Calculating its DFT using FFT dimension 1
fft_mat_dim1 = fft(mat,[],1);
 
% Calculating its DFT using FFT dimension 2
fft_mat_dim2 = fft(mat,[],2);
MATLAB

输出:

输出将在三种情况下给我们提供傅里叶变换。

1.沿着整个矩阵进行FFT。
2.沿着维度1的FFT
3.沿着维度2的FFT

MATLAB中的快速傅里叶变换

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册