问题标签 [continuous-fourier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1538 浏览

matlab - 为什么改变采样频率时频谱会发生变化?

这是我在时域中生成三角波形并生成其相应的傅立叶级数/变换的代码(我不知道它的级数还是变换,因为matlab只有傅立叶变换功能,但由于信号是周期性的,参考资料说傅立叶对应物必须称为傅立叶级数)。

这是时域信号、幅度谱和相位谱的生成图。

链接: fs = 330hz

我的问题是当我将采样频率(当前等于 330 赫兹的 fs)更改为另一个值时,幅度谱和相位谱图会发生变化。

以下是采样频率等于 400 Hz 时的幅度谱和相位谱图:

链接: fs = 400 赫兹

你能解释为什么会这样吗?在给定任何采样频率的情况下,我该怎么做才能获得幅度和相位谱的恒定图?

0 投票
1 回答
981 浏览

matlab - 如何在 MatLab 上为我的 txt 文件数据绘制傅里叶光谱?

我在 txt 文件中每秒获取一个基于地面的磁数据,我想绘制它的傅里叶光谱。

我注意到 MatLab 上的谱图方程需要这个我不知道的参数(window、noverlap、nfft、Fs)。

而且我还注意到,我应该先对我的数据进行 FFT,然后再绘制它的频谱图,但是我的数据不是离散的,而离散数据的 FFt,有人知道我该怎么做吗?

0 投票
1 回答
1261 浏览

transform - 信号的傅里叶变换何时是周期性的?

另外,周期信号的傅里叶逆变换是否也是周期性的?

0 投票
1 回答
3897 浏览

python - 使用 Python / Sympy 进行连续傅里叶变换(解析解)

我最近用 Python 替换了 Matlab,因为我对 Sympy 很感兴趣。

但现在我有以下问题:

我需要一种使用 Python 可靠地计算连续傅立叶变换的方法。Sympy 在解决方案方面存在问题,包括狄拉克(三角函数),因为它们例如出现在三角函数等中。

例如,如果我尝试

输出是0应该基于狄拉克三角函数的地方

有谁知道,Sympy 的这一部分是否会得到改进,或者是否有另一种方法可以用 Python 分析地找到傅立叶变换?

提前感谢您的回答或任何建议!

0 投票
1 回答
403 浏览

matlab - 优化傅里叶级数拟合函数 Matlab

我正在尝试遍历一组似乎显示周期性变化的样本。我需要不断地应用拟合函数来获得傅立叶级数系数​​,回归必须是过去的 n 个样本(在我的例子中,大约是 30)。问题是,我的代码非常慢!对一组 50,000 个样本执行此操作大约需要 1 小时。有没有办法优化这个?我究竟做错了什么?

这是我的代码:

当我打电话时,[coefnames,coef] = fourier_regression(VECTOR,30);这需要永远计算。有什么办法可以解决吗?我的代码有什么问题?

注意:我有一个 intel i7 5500 U cpu,16GB RAM,并使用 Matlab 2015a。

0 投票
1 回答
234 浏览

python - 在 python 上使用 DFT 通过正弦波逼近。怎么了?

我正在 python 上编写可以通过正弦波近似时间序列的程序。该程序使用 DFT 寻找正弦波,然后选择幅度最大的正弦波。

这是我的代码:

但我得到了一个奇怪的结果: 在此处输入图像描述

在程序中,我从两个正弦波创建了一个时间序列:

我的程序发现了错误的正弦波参数:

程序找到了接下来的 2 个正弦波:[(amp=0.9998029885151699,frq=0.10053096491487339,phase=1.1411803525843616), (amp=0.24800925225626422,frq=0.4021238540594931528)phase=80659493754,

我想,我的问题是波浪参数的缩放错误,但我不确定。程序在两个地方进行缩放。首先是创建波浪:

第二个地方是 x 轴的缩放:

但我的假设可能是错误的。我尝试过多次更改缩放比例,但并没有解决我的问题。

代码可能有什么问题?

0 投票
2 回答
1666 浏览

matlab - 使用符号变量对函数进行傅里叶变换

MATLAB 无法计算fft此函数的:

并抛出了这个错误:

'sym' 类型的输入参数的未定义函数 'fft'。

为什么不对符号变量进行傅里叶变换?我认为应该是因为我们可能希望获得作为符号值的结果。

我也尝试用非符号变量来解决这个问题。

这次我的错误是:

矩阵尺寸必须一致。

但是,它们具有相同的尺寸。我的错在哪里?

0 投票
1 回答
45 浏览

r - 在傅立叶插值的上下文中返回函数的“传统”符号

在数值分析中,我们的学生有义务在 R 中实现代码,给定函数 f(x) 找到其傅里叶插值 tN(x) 并计算插值误差

或各种不同的 $N$ 我首先尝试根据这个公式计算 d 系数:

其中 M 表示 DFT 矩阵,y 表示一系列等距函数值

我的目标是得出一个可以描述为的总和:

稍后将更容易集成到随后的加法符号中。

最初,变换函数的主要目的是返回一个函数——或者更确切地说:一个数学表达式——然后可以使用它来声明我的傅里叶插值函数。问题是,根据我相当有限的知识,我无法集成仍然嵌套了总和的函数(这就是我在代码中注释相应行的原因)。出于绝对的绝望,我随后尝试以文本形式粘贴每个总和,只是为了再次将它们解析为表达式。所以剩下的主要问题是:我如何以允许我将它们用作函数并稍后集成它们的方式返回数学表达式?对于任何误解或混淆,以及我看似业余的编码,我深表歉意。提前致谢!

0 投票
0 回答
345 浏览

fortran - 如何在 Fortran 中高效准确地计算径向函数的傅里叶变换

正如我的问题所述,我想计算径向函数 f(r) 的傅里叶变换 F(q)(在 [0,infinity[ 上定义,并且在大 r 处像指数 exp(-Ar +b) 一样衰减)为在 Fortran 中尽可能准确。函数值来自一个数据文件(例如,我可以很容易地通过三次插值对其进行插值并进行外推,因为大 r 的行为是已知的)。

我在 3D 中使用傅里叶变换的“物理”定义,它给出(因为 f 是径向的):在此处输入图像描述

我首先尝试通过使用 Gauss-Legendre 求积法,通过 NAG 例程 D01BCF(D01BCF 链接)生成一些 60 或 100 个横坐标和权重来计算某些选定值的 q 积分. 在高斯勒让德求积的情况下,问题是选择要在其上积分的区间 [0,B]。虽然函数 f 从 r=10 到 r=20 损失了 4 到 5 个数量级(示例),但 B 的选择对计算结果有很大影响......当我比较结果时,我得到一个“几乎精确”的计算(使用 matlab 但计算时间非常长),我看到实际上这仅对 q 的小值有效(大约为 5,当我必须处理大至 150 的值时) . Gauss-Laguerre 求积并没有给出更好的结果,可能是因为被积函数的振荡部分。

然后,我尝试使用例程 D01ASF (D01ASF link)为一些给定的 q 值计算傅立叶变换。它是一个“一维求积、自适应、半无限区间、权函数cos(ωx)或sin(ωx)”,正是我所需要的。如果我输入 10E-5 的绝对误差容限,对于高达 80 或 100 的 q,结果非常令人信服。问题是:我需要更大的 q,并且傅里叶变换 F(q) 在这样的 q 处以 ~ 10E-6 的幅度振荡。将容差降低到 10E-5 已经需要一些时间,甚至会使整个事情从子程序输出一些错误消息,所以我不知道 10E-6 是否可行。

因此,我目前想知道尝试用 FFT 计算这个傅立叶变换是否不是一个好主意?我面临的问题是我不知道如何用 FFT 计算径向波函数(而且我什至不知道如何正确使用 FFT,因为变换的定义甚至不一样(指数符号和论点)并且我以前从未使用过它)。

你有想法吗?:)

编辑 2:我尝试了 FFT(使用 NAG 库中的例程C06FAF)。对于一些较大的 q 值,它工作得很好。我面临的问题是总是有一些恒定的标准化因素需要考虑。我不明白为什么。这个归一化因子随着网格中使用的点数 N 变化。它具有幂律的:归一化因子 F = N^(-0.5) x exp(9.9) 近似(见图数字,其中黑线是“精确”傅里叶变换,绿色、品红色、蓝色、红色和黄色线是针对不同 N 值计算的 FFT)

EDIT3:我发现因子是 A*N^(-0.5) 其中 A 是积分网格的长度

0 投票
0 回答
112 浏览

matlab - FFT 高斯 VS 傅里叶变换(手动)高斯

在 Fortran 程序中,我使用用户可以选择的给定函数的傅里叶变换。但是用户已经必须编写函数的傅里叶变换。

所以我想以用户只需要提供原始功能的方式扩展程序。在这种情况下,一个高斯函数。为此,我需要进行 FFT。

如果我们有:

然后手动傅里叶变换由下式给出

现在如果我做 fft of h(x) 我应该得到 fth(k) 对吗?这是我的代码:

但为什么我会得到完全不同的东西?