复数 FFT 然后逆 FFT MATLAB

2023-12-14

我正在使用 Matlab 中的 FFT 函数来尝试分析行波激光模型的输出。

模型的时域形式为(实数、虚数),其思想是将 FFT 应用于复数输出,以获得频域中的相位和幅度信息:

%load time_domain field data
data = load('fft_data.asc');

% Calc total energy in the time domain
N = size(data,1);
dt = data(2,1) - data (1,1);
field_td = complex (data(:,4), data(:,5));


wavelength = 1550e-9;
df = 1/N/dt;
frequency = (1:N)*df;
dl = wavelength^2/3e8/N/dt;
lambda = -(1:N)*dl +wavelength + N*dl/2;

%Calc FFT
FT = fft(field_td);
FT = fftshift(FT);
counter=1;
phase=angle(FT);
amptry=abs(FT);
unwraptry=unwrap(phase);

展开之后,将最佳拟合应用于感兴趣区域中的相位,然后从相位本身中减去,以试图消除感兴趣区域中相位的波长依赖性。

for i=1:N % correct phase and produce new IFFT input
    bestfit(i)=1.679*(10^10)*lambda(i)-26160;
    correctedphase(i)=unwraptry(i)-bestfit(i);
    ReverseFFTinput(i)= complex(amptry(i)*cos(correctedphase(i)),amptry(i)*sin(correctedphase(i)));
end

手动执行最佳拟合后,我现在有了逆 FFT 输入,如上所示。

pleasework=ifft(ReverseFFTinput);

现在我可以从中提取时域中的相位和幅度信息:

newphasetime=angle(pleasework);
newamplitude=abs(pleasework);

然而,尽管相位的输出与时域的输入相比有很大不同

blue=output of phase in time domain after inverse FFT back

校正数据的幅度似乎变化很小(如果有的话!),

enter image description here enter image description here

尽管阶段的缩放。从物理上讲,这似乎不正确,因为我的理解是,消除相位的波长依赖性应该“压缩”脉冲输入,即缩短脉冲宽度但提高峰值。

我的主要问题是我是否未能正确使用反向 FFT、或正向 FFT 或两者,或者这是否是窗口或标准化问题?

抱歉问了这么长的问题!并提前致谢。


您实际上看到了两种效果。

首先,预期的事情发生了。您正在谈论“消除相位的波长依赖性”。如果你确实这样做了——将相位完全归零——你实际上会得到一个稍微压缩的峰值。 您实际上所做的是向相位添加一个线性函数。这不会压缩任何东西;这是一种众所周知的变换,相当于在时域中移动峰值。只是傅立叶变换的教科书性质。

然后就出现了意想不到的情况。您可以将获得的光谱转换为fft with fftshift为了更好的展示。因此在使用之前ifft要将其转换回来,您需要申请ifftshift第一的。如果不这样做,频谱就会在频域中有效地移动。这会导致时域相位被添加为时间的线性函数,因此过去接近零的相邻点之间的差现在约为 pi。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复数 FFT 然后逆 FFT MATLAB 的相关文章

  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • MATLAB 图中轴标签与轴之间的距离

    我正在使用 MATLAB 绘制一些数据 我想调整轴标签与轴本身之间的距离 但是 只需向标签的 位置 属性添加一点即可使标签移出图窗窗口 是否有 保证金 属性或类似的东西 在上图中 我想增加数字和标签 Time s 之间的距离 同时自动扩展数
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 归一化互相关的基础知识

    我正在尝试使用范数校正2 归一化互相关 http en wikipedia org wiki Cross correlation Normalized cross correlation 来自 MATLAB 用于计算发育中胚胎中移动形状的速
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • 从筛查乳腺 X 光检查数字数据库 (DDSM) 获取数据

    我正在尝试以可读格式获取 DDSM 数据集 有谁有 DDSM heathusf 程序的工作版本 可以在 Linux 或 Windows 上正常运行吗 我知道 DDSM 的 jpeg 程序有一个适用于 linux 的工作版本 位于http w
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • Java 模 2**64 求逆

    给定一个奇数long x 我在找long y这样他们的乘积模2 64 即 使用正常的溢出算术 等于 1 为了明确我的意思 这可以在几千年内计算出来 for long y 1 y 2 if x y 1 return y 我知道可以使用扩展欧几
  • 将 kinect RGB 和深度值转换为 XYZ 坐标

    我正在寻找一种简单的方法将 kinect RGB 和深度值转换为 XYZ 坐标 使用 MATLAB 我的目标是一个输入为以下内容的函数 每个点的 RGB 和深度值Kinect相机 并输出 每个点的 x y 和 z 值 RGB 深度 RGB
  • MATLAB 除法...29/128 应该返回 0 吗?

    我真的不认为这是一个精度问题 答案应该是0 226左右 这是确切的代码 val I i j bucketSize pos val bucketSize I只是我从中获取值的矩阵 以下是 MATLAB 的输出 val 29 bucketSiz
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • 将向量(或弧)绘制到玫瑰图上。 MATLAB

    我有两个数据集 其中详细列出了angles 我正在绘制玫瑰图 angles 0 8481065519 0 0367932161 2 6273740453 n 另一个 从这组角度详细说明方向统计 angle error 0 848106563

随机推荐

  • 暂时从 Google Translate API 的字符串中删除 HTML 以降低成本

    我必须使用我们付费的 Google API 翻译一些详细信息 详细信息包含 HTML Google 对每个字符收费 我不想发送完整的内容 而只想发送英文文本 并删除 HTML 我可以使用 PHP 函数删除 HTML 标签和实体 但我必须在翻
  • ASP.NET MVC2 项目的 DDD 架构

    我正在尝试将域驱动开发 DDD 用于我的新 ASP NET MVC2 项目和 Entity Framework 4 经过一些研究 我在自己的类项目中对每个层提出了以下层约定 我的公司 域 public class User Contains
  • 如果使用java满足某些条件,如何为某一行设置颜色?

    我有一个jtable 表格摘要 其中一栏是 EXPIRY 我想突出显示客户的行 其到期日已在当前日期失效 我已经有了逻辑 但我无法使该行变成红色或任何其他颜色 这是我的代码 int count tableSummary getRowCoun
  • “\n”分隔符问题

    我有一个 stringbuilder 对象 其中添加了一行数据 添加每一行后 我在末尾附加一个 n 以指示新行 这个 stringbuilder 对象最终确定后被写入一个平面文件 当我在记事本中打开平面文件时 每行后面都会出现一个小矩形 并
  • Twitter API 更新限制错误 403

    我正在尝试使用 twitter4j api 从 twitter api 检索数据 一段时间后检索数据我收到以下错误 Exception in thread main 403 The request is understood but it
  • JQgrid动态添加Dropdown

    我想在 JQGrid 中动态添加下拉菜单 例如 我有以下类型的网格 现在 当我单击按钮时 应在网格中添加一个新行 对于新行 第一列数据将是下拉列表 第二个超链接 第三个下拉列表和第四个复选框 即它应该与第一行相同 对于每个按钮 单击新行时应
  • 什么可能导致 System.TypeLoadException?

    我正在使用 C 使用 VS2008 开发 Honeywell Dolphin 6100 的应用程序 Honeywell Dolphin 6100 是一款带有条形码扫描仪的移动计算机 使用类似 Windows CE 5 0 的操作系统 我想添
  • 无法通过 Azure Powershell 在新应用程序注册模块中设置“preAuthorizedApplications”对象

    简短的场景 多租户前端 javascript React JS Web 应用程序从浏览器调用多租户 ASP NET Core 2 2 WebAPI 验证 当用户登录时 基于用户的原始 Azure Active Directory 前端应用程
  • self = [超级初始化] 重新审视

    我偶然发现了这个帖子在 Objective C 中 为什么我应该检查 self super init 是否不为零 我能够了解这个语法 id initWithString NSString aString self super init if
  • 带有controlsfx通知组件的javafx NullPointerException

    我想开发一个使用controlsfx通知在系统托盘模式下显示一些通知的应用程序 在正常模式下 我的应用程序运行良好 并且可以成功显示通知 但是当我在系统托盘中隐藏阶段时 会发生 NullPointerException 我不知道如何解决这个
  • 将多个 pandas 数据帧导出到 csv 文件的最有效方法是什么?

    我有多个 pandas 数据框 df1 df2 df3 我想将它们全部导出到 csv 文件 df1 to csv df1 csv index False df2 to csv df2 csv index False df3 to csv d
  • 以两个不同的名称将 docker 容器添加到网络

    我正在尝试新的 docker 网络功能 我使用容器链接将旧设置迁移到新的桥接网络 到目前为止 我已经在同一主机上的多个容器之间启动并运行了专用桥接网络 现在我正在寻找一种方法来复制同一容器的多个链接别名 假设我有一个名为myBox加入 do
  • 只需从 PHP 中的字符串获取图像 URL [重复]

    这个问题在这里已经有答案了 从这样的字符串 img src images mylondon jpg 我正在尝试检索仅在 PHP 中其他地方使用的 url 我知道正则表达式是可行的方法 但我现在无法理解它们 有人可以帮忙吗 preg matc
  • DBGrid 停止当前行移动

    使用 d5 TDBGrid SQLite3 和 ZEOS 数据库有 2000 个项目 一列是 Active 布尔值 第二列是 ItemName 文本 IndexFiledNames 是 ItemName OnDblclick 切换 活动 开
  • Apache 中用于 POST/DELETE/PUT 的 URL 重写

    我的网址是这样的 http 10 243 123 1 v1 data register 我想重定向 重写这个网址到 https 10 243 123 1 data register This is HTTP POST PUT DELETE
  • 添加新行时,Google 表格条件格式会发生变化

    因此 我单击 A 和 1 之间的单元格来选择整个工作表 然后单击 格式 然后单击 条件格式 并设置规则 基本上 我有大约 15 种不同的条件 但所有条件都在 F 到 O 列中 所以我使用 F O 例如 如果文本恰好是 是 则将背景更改为绿色
  • 如果水平进度条位于工具栏上方,则不可见(适用于 Android 5)

    我尝试通过以下 XML 将水平进度条放置在工具栏顶部 my activity xml
  • hadoop getmerge到另一台机器

    是否可以存储输出hadoop dfs getmerge命令到另一台机器 原因是我的本地机器没有足够的空间 作业输出为 100GB 我的本地存储为 60GB 另一个可能的原因可能是我想在另一台机器上本地处理另一个程序中的输出 并且我不想将其传
  • R data.table 使用标准名称创建新列

    我想根据比率计算为我的 data table 创建新列 我的变量的名称有点标准 所以我认为必须有一种方法可以轻松实现这一点数据表 但是我不知道如何实现这一点 以下是我的示例数据和代码 set seed 1200 ID lt seq 1001
  • 复数 FFT 然后逆 FFT MATLAB

    我正在使用 Matlab 中的 FFT 函数来尝试分析行波激光模型的输出 模型的时域形式为 实数 虚数 其思想是将 FFT 应用于复数输出 以获得频域中的相位和幅度信息 load time domain field data data lo