矩形函数的数值傅里叶变换

2024-06-20

本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换。为此,我选择矩形函数,这里报告了它的解析表达式及其傅立叶变换https://en.wikipedia.org/wiki/Rectangle_function https://en.wikipedia.org/wiki/Rectangular_function

这是Matlab中的代码

x = -3 : 0.01 : 3;
y = zeros(length(x));
y(200:400) = 1;
ffty = fft(y);
ffty = fftshift(ffty);
plot(real(ffty))

这里是 Python 代码

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-3, 3, 0.01)
y = np.zeros(len(x))
y[200:400] = 1
ffty = np.fft.fft(y)
ffty = np.fft.fftshift(ffty)
plt.plot(np.real(ffty))

在这两种编程语言中,我都得到了一些结果,但存在一些问题: 首先,傅立叶变换并不像预期的那样真实,而且即使选择实部,解看起来也不像解析解:事实上,这里报告的第一个图至少在形状上应该是这样,第二个图是我从计算中得到的结果。

有谁可以建议我如何分析计算矩形函数的傅里叶变换?


您的 Matlab 代码有两个问题:

First, y = zeros(length(x));应该y = zeros(1,length(x));。当前您创建的是方阵,而不是向量。

其次,DFT(或 FFT)将是实数且对称的,如果y是。你的y应该是对称的,这意味着关于0。所以,而不是y(200:400) = 1; use y(1:100) = 1; y(end-98:end) = 1;。回想一下,DFT 就像信号的傅立叶级数,您的输入只是一个周期,第一个样本对应于时刻 0。

So:

x = -3 : 0.01 : 3;
y = zeros(1,length(x));
y(1:100) = 1; y(end-98:end) = 1;
ffty = fft(y);
ffty = fftshift(ffty);
plot(ffty)

gives

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

矩形函数的数值傅里叶变换 的相关文章

随机推荐

  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 可以在滚动条上绘画吗?

    是否可以在 TMemo TListbox 等标准控件的滚动条上进行绘制 我所需要的只是在滚动条上绘制一些基本形状 并且我试图避免从 stratch 实现整个滚动内容 有什么指点吗 蒂亚 确实有可能 你可能想看一下WM NCPAINT消息 这
  • 将delphi stringgrid导出到excel

    我正在尝试将数据从delphi 7 中的stringgrid 导出到microsoft excel 我一直在使用这段代码来做到这一点 objExcel TExcelApplication Create nil objExcel Visibl
  • 保持未知数量的 div 居中,每行最多 4 个

    我有一个简单的问题 但我自己无法解决 简而言之 有一个未知电话我必须在页面中放置的元素数量 最多 每行 4 个元素 但仍居中 此图片给您一个提示 我为了示例而设置它 详细 在上图中我涵盖了不同的场景 例如 如果总共有 5 个元素 则应使用第
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 如何使用原子操作实现 std::weak_ptr::lock ?

    最近尝试用C实现原子引用计数器 所以参考了STL中std shared ptr的实现 对weak ptr lock的实现很困惑 执行compare and exchange时 clang指定了memory order seq cst g 指
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • Angular.js,如何将值从一个组件传递到任何其他组件

    我从 Angular js 开始 所以如果我解释得不够 我会将其添加到问题中 请告诉我 I have A component js A template html B component js B template html A compo
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • id # 的用户对 id # 的个人资料没有正确的视图

    我正在尝试将联系人添加到联系人字段 该字段当前在应用程序中没有信息 我最初通过应用程序身份验证尝试此操作 但发现了这篇文章在跑道论坛上 https help podio com hc en us community posts 206333
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 在比较 Delphi 表单文件的版本时,如何使 Beyond Compare 忽略某些差异

    我使用Beyond Compare 版本3 1 10 来比较不同版本的Delphi Form Files 但我不想看到有关ExplicitTop ExplicitLeft ExplicitHeight 和ExplicitWidth 的差异
  • 如何在c++中读取pcap文件来获取数据包信息?

    我想用 C 编写一个程序来读取 pcap 文件并获取数据包的信息 例如 len sourc ip flags 等 现在我找到了如下代码 我认为它会帮助我获取信息 但是我有一些疑问 首先我想知道应该将哪个库添加到我的程序中 然后什么是 pca
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 在 Moment.js 中,如何获取特定月份下一次出现的日期(例如:“明年一月”=> 2013-01-01)?

    例子 现在是 2012 年 3 月 26 日 我要求明年 2 月 它应该返回 2013 01 01 现在是 2012 年 3 月 26 日 我要求明年 4 月 它应该返回 2012 04 01 你可以做这样的事情 date is a JS
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 使用的端口未显示在 netstat -a 结果中

    最近当我尝试启动 active mq 默认情况下在端口 61616 上启动 时 这个问题开始出现 但突然间 该端口上不再出现 JVM BIND 问题 即使重新启动计算机后问题也没有消失 主要问题是 Windows 7 上的 netstat
  • 使用 luasocket smtp 和 ssl 发送电子邮件

    我一直在尝试使用帖子中描述的代码发送电子邮件 lua使用gmail账户发送邮件 https stackoverflow com questions 11070623 lua send mail with gmail account 代码由米
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan