- Matlab 教程
- MATLAB - 首页
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 环境设置
- MATLAB - 编辑器
- MATLAB - 在线
- MATLAB - 工作区
- MATLAB - 语法
- MATLAB - 变量
- MATLAB - 命令
- MATLAB - 数据类型
- MATLAB - 运算符
- MATLAB - 日期和时间
- MATLAB - 数字
- MATLAB - 随机数
- MATLAB - 字符串和字符
- MATLAB - 文本格式化
- MATLAB - 时间表
- MATLAB - M 文件
- MATLAB - 冒号表示法
- MATLAB - 数据导入
- MATLAB - 数据输出
- MATLAB - 数据归一化
- MATLAB - 预定义变量
- MATLAB - 决策
- MATLAB - 决策语句
- MATLAB - If End 语句
- MATLAB - If Else 语句
- MATLAB - If…Elseif Else 语句
- MATLAB - 嵌套 If 语句
- MATLAB - Switch 语句
- MATLAB - 嵌套 Switch
- MATLAB - 循环
- MATLAB - 循环
- MATLAB - For 循环
- MATLAB - While 循环
- MATLAB - 嵌套循环
- MATLAB - Break 语句
- MATLAB - Continue 语句
- MATLAB - End 语句
- MATLAB - 数组
- MATLAB - 数组
- MATLAB - 向量
- MATLAB - 转置运算符
- MATLAB - 数组索引
- MATLAB - 多维数组
- MATLAB - 兼容数组
- MATLAB - 分类数组
- MATLAB - 元胞数组
- MATLAB - 矩阵
- MATLAB - 稀疏矩阵
- MATLAB - 表格
- MATLAB - 结构体
- MATLAB - 数组乘法
- MATLAB - 数组除法
- MATLAB - 数组函数
- MATLAB - 函数
- MATLAB - 函数
- MATLAB - 函数参数
- MATLAB - 匿名函数
- MATLAB - 嵌套函数
- MATLAB - 返回语句
- MATLAB - 空函数
- MATLAB - 局部函数
- MATLAB - 全局变量
- MATLAB - 函数句柄
- MATLAB - 滤波函数
- MATLAB - 阶乘
- MATLAB - 私有函数
- MATLAB - 子函数
- MATLAB - 递归函数
- MATLAB - 函数优先级顺序
- MATLAB - Map 函数
- MATLAB - Mean 函数
- MATLAB - End 函数
- MATLAB - 错误处理
- MATLAB - 错误处理
- MATLAB - Try...Catch 语句
- MATLAB - 调试
- MATLAB - 绘图
- MATLAB - 绘图
- MATLAB - 绘制数组
- MATLAB - 绘制向量
- MATLAB - 条形图
- MATLAB - 直方图
- MATLAB - 图形
- MATLAB - 2D 线性图
- MATLAB - 3D 图形
- MATLAB - 格式化图形
- MATLAB - 对数坐标轴图形
- MATLAB - 绘制误差条
- MATLAB - 绘制 3D 等值线
- MATLAB - 极坐标图
- MATLAB - 散点图
- MATLAB - 绘制表达式或函数
- MATLAB - 绘制矩形
- MATLAB - 绘制频谱图
- MATLAB - 绘制网格曲面
- MATLAB - 绘制正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 线性插值
- MATLAB - 2D 数组插值
- MATLAB - 3D 数组插值
- MATLAB - 多项式
- MATLAB - 多项式
- MATLAB - 多项式加法
- MATLAB - 多项式乘法
- MATLAB - 多项式除法
- MATLAB - 多项式的导数
- MATLAB - 变换
- MATLAB - 变换
- MATLAB - 拉普拉斯变换
- MATLAB - 拉普拉斯滤波器
- MATLAB - 高斯-拉普拉斯滤波器
- MATLAB - 逆傅里叶变换
- MATLAB - 傅里叶变换
- MATLAB - 快速傅里叶变换
- MATLAB - 2D 逆余弦变换
- MATLAB - 向坐标轴添加图例
- MATLAB - 面向对象
- MATLAB - 面向对象编程
- MATLAB - 类和对象
- MATLAB - 函数重载
- MATLAB - 运算符重载
- MATLAB - 用户定义类
- MATLAB - 复制对象
- MATLAB - 代数
- MATLAB - 线性代数
- MATLAB - 高斯消元法
- MATLAB - 高斯-约旦消元法
- MATLAB - 简化行阶梯形式
- MATLAB - 特征值和特征向量
- MATLAB - 积分
- MATLAB - 积分
- MATLAB - 二重积分
- MATLAB - 梯形法则
- MATLAB - 辛普森法则
- MATLAB - 其他
- MATLAB - 微积分
- MATLAB - 微分
- MATLAB - 矩阵的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用资源
- MATLAB - 快速指南
- MATLAB - 有用资源
- MATLAB - 讨论
MATLAB - 傅里叶变换
傅里叶变换是一种强大的数学工具,用于信号处理、图像处理和许多其他领域。它将时间函数(或信号)分解成其组成频率。在 MATLAB 中,可以使用 fft 函数计算一维信号的傅里叶变换,或使用 fft2 函数计算二维信号(如图像)的傅里叶变换。
傅里叶变换有许多应用,例如信号和图像的滤波、压缩和分析。了解傅里叶变换有助于分析和处理 MATLAB 中各种类型的数据。
使用 fourier() 函数进行傅里叶变换
MATLAB 中的 fourier 函数用于计算周期信号的傅里叶级数系数或非周期信号的傅里叶变换。它可以用于分析时域和频域中信号的频率成分。该函数返回复系数,表示信号在不同频率下正弦分量的幅度和相位。
语法
fourier(f) fourier(f,transVar) fourier(f,var,transVar)
语法解释
fourier(f) − 计算函数 f 的傅里叶变换。它使用 symvar 查找自变量,w 是用于变换的变量。
fourier(f,transVar) − 计算函数 f 的傅里叶变换,使用变量 transVar 代替 w 进行变换。
fourier(f,var,transVar) − 计算函数 f 的傅里叶变换。它分别使用 var 作为自变量和 transVar 作为变换变量,而不是默认的 symvar 和 w。
让我们根据上面解释的语法看几个例子。
示例 1:计算函数的傅里叶变换
我们拥有的代码为 -
syms t w f = exp(-t^2); % Define the function F = fourier(f); % Calculate the Fourier Transform disp(F); % Display the result
- 在此示例中,我们有一个定义为 exp(-t^2) 的函数 f。
- 我们使用 fourier 函数计算 f 的傅里叶变换。
- 函数 fourier 使用 symvar 将 t 确定为自变量,将 w 确定为变换变量。
- 结果 F 是函数 f 的傅里叶变换,使用 disp(F) 显示。
执行后输出为 -
pi^(1/2)*exp(-w^2/4)
示例 2:使用自定义变换变量计算傅里叶变换
我们拥有的代码为 -
syms t u f = sin(2*pi*t); % Define the function F = fourier(f, u); % Calculate the Fourier Transform with u as the transformation variable disp(F); % Display the result
- 在此示例中,我们有一个定义为 sin(2*pi*t) 的函数 f。
- 我们使用 fourier 函数,并将变量 u 指定为变换变量,而不是默认的 w。
- 结果 F 是函数 f 相对于变量 u 的傅里叶变换。
- 结果使用 disp(F) 显示。
执行后输出为 -
-pi*(dirac(u - 2*pi) - dirac(u + 2*pi))*1i
示例 3:使用自定义变量进行傅里叶变换
我们拥有的代码为 -
syms t omega f = sin(omega*t); % Define the function F = fourier(f, t, omega); % Calculate the Fourier Transform with t as the independent variable and omega as the transformation variable disp(F); % Display the result
我们获得的输出为 -
>> syms t omega f = sin(omega*t); % Define the function F = fourier(f, t, omega); % Calculate the Fourier Transform with t as the independent variable and omega as the transformation variable disp(F); % Display the result -1i*Inf >>
使用 fft() 函数进行傅里叶变换
傅里叶变换是一种数学技术,可将信号分解成其组成频率。在 MATLAB 中,可以使用 fft 函数计算一维信号的傅里叶变换。
语法
Y = fft(X) Y = fft(X,n) Y = fft(X,n,dim)
语法解释
Y = fft(X) − 使用称为快速傅里叶变换 (FFT) 的快速算法计算 X 的离散傅里叶变换 (DFT)。输出 Y 与 X 大小相同。
- 如果 X 是向量,则 fft(X) 返回向量的傅里叶变换。
- 如果 X 是矩阵,则 fft(X) 将 X 的列视为向量并返回每列的傅里叶变换。
- 如果 X 是多维数组,则 fft(X) 将第一个大小不为 1 的数组维度上的值视为向量并返回每个向量的傅里叶变换。
Y = fft(X,n) − 计算 X 的 n 点离散傅里叶变换 (DFT)。
- 如果 X 是向量且短于 n,则将零添加到 X 的末尾以使其长度为 n。
- 如果 X 是向量且长于 n,则 X 将缩短为长度 n。
- 如果 X 是矩阵,则每列都像向量一样处理。
- 如果 X 是多维数组,则第一个大小不为 1 的维度将像向量一样处理。
Y = fft(X,n,dim) − 沿 X 的指定维度 dim 计算傅里叶变换。
- 如果 X 是矩阵,则 fft(X,n,2) 计算每行的 n 点傅里叶变换。
- 如果 X 是多维数组,则沿指定的维度 dim 计算傅里叶变换。
让我们根据上面解释的语法看几个例子。
示例 1:计算离散傅里叶变换 (DFT)
我们拥有的代码为 -
% Create a simple signal x = [1, 2, 3, 4]; % Calculate the Discrete Fourier Transform (DFT) of the signal y = fft(x); % Display the original signal and its DFT disp('Original Signal:'); disp(x); disp('Discrete Fourier Transform:'); disp(y);
- 在此示例中,我们有一个简单的一维信号 x,包含四个值 [1, 2, 3, 4]。
- 我们使用 fft 函数计算信号的离散傅里叶变换 (DFT),并将结果存储在 y 中。
- fft 函数使用称为快速傅里叶变换 (FFT) 的快速算法计算 DFT。
- 输出 y 与输入信号 x 大小相同,包含信号的傅里叶变换。
执行后,我们得到的输出如下所示 -
Original Signal: 1 2 3 4 Discrete Fourier Transform: 10.0000 + 0.0000i -2.0000 + 2.0000i -2.0000 + 0.0000i -2.0000 - 2.0000i
示例 2:计算 n 点离散傅里叶变换 (DFT)
我们拥有的代码为 -
% Create a simple signal x = [1, 2, 3, 4]; % Calculate the 8-point Discrete Fourier Transform (DFT) of the signal y = fft(x, 8); % Display the original signal and its DFT disp('Original Signal:'); disp(x); disp('8-point Discrete Fourier Transform:'); disp(y);
- 在此示例中,我们有一个简单的一维信号 x,包含四个值 [1, 2, 3, 4]。
- 我们使用 fft 函数以及参数 8 来计算信号的 8 点离散傅里叶变换 (DFT),并将结果存储在 y 中。
- 由于 x 的长度小于 8,因此将零添加到 x 的末尾以使其长度为 8。
- 输出 y 是信号的 8 点 DFT。
执行后,我得到的输出为 -
Original Signal: 1 2 3 4 8-point Discrete Fourier Transform: Columns 1 through 3: 10.0000 + 0i -0.4142 - 7.2426i -2.0000 + 2.0000i Columns 4 through 6: 2.4142 - 1.2426i -2.0000 + 0i 2.4142 + 1.2426i Columns 7 and 8: -2.0000 - 2.0000i -0.4142 + 7.2426i
示例 3:沿指定维度计算傅里叶变换
我们拥有的代码如下所示 -
% Create a 2x4 matrix X = [1, 2, 3, 4; 5, 6, 7, 8]; % Compute the Fourier transform along the second dimension (columns) Y = fft(X, [], 2); % Display the original matrix and its Fourier transform disp('Original Matrix:'); disp(X); disp('Fourier Transform Along Columns:'); disp(Y);
- 在此示例中,我们有一个具有两行和四列的 2x4 矩阵 X。
- 我们使用带有参数 2 的 fft 函数来计算 X 的第二维(列)上的傅里叶变换,并将结果存储在 Y 中。
- X 的每一列都被视为一个向量,并且独立计算每一列的傅里叶变换。
- 输出 Y 是一个 2x4 矩阵,包含 X 的各列的傅里叶变换。
执行后,我们得到的输出如下所示 -
Original Matrix: 1 2 3 4 5 6 7 8 Fourier Transform Along Columns: 10 + 0i -2 + 2i -2 + 0i -2 - 2i 26 + 0i -2 + 2i -2 + 0i -2 - 2i