小编lrs*_*rsp的帖子

使用 scipy.fftpack 绘制的 fft 图中出现恒定线

当我使用 scipy.fftpack 对信号计算 FFT 并随后绘制它时,我得到一条恒定的水平线(以及我的数据上的一条垂直线)任何人都可以解释为什么会出现这些线,并且可能提出一个解决方案来绘制频谱而无需线条?

让我们看一个简单的信号。频率为 12 赫兹的正弦波。在此示例中,您可以看到大约 处的水平线y = 2.1

import numpy as np
import matplotlib.pyplot as plt
import scipy.fftpack

# test signal
omega = 2 * np.pi * 12
t = np.linspace(-15, 15, 1000)
ampl = np.sin(omega * t)

# compute fft, fft frequences
fft  = abs(scipy.fft(amp))
freq = scipy.fftpack.fftfreq(fft.size, t[1] - t[0])

# plot
plt.plot(freq, fft)
Run Code Online (Sandbox Code Playgroud)

示例信号中的水平线。

这是我的实验信号的 FFT 图(放大)。您可以看到水平线 ( y =~ 0.0015) 和垂直线 ( 在x = 0)。

根据这些行,我在数组中找不到任何数据。为什么会出现这些线条?

放大

python fft

5
推荐指数
1
解决办法
3043
查看次数

tabulate:为每列定义 floatfmt

我正在使用 tabulate 0.75 生成 LaTeX 表。生成表格的函数 tabulate 有一个内置函数来格式化输入。但我想定义每列本身的小数位数。例如

a      b
18.12  16
17.47  15
Run Code Online (Sandbox Code Playgroud)

这是内置函数 (floatfmt=".2f"),它运行完美 - 但它对每一列的作用都是相同的。

tabulate(tables[i], headers[i], numalign="center", tablefmt="latex_booktabs", floatfmt=".2f")
Run Code Online (Sandbox Code Playgroud)

我通过以下方式获取我的数据

tables = [(list(zip(
                unumpy.nominal_values(dt),
                unumpy.nominal_values(U),
                unumpy.nominal_values(I),
                unumpy.nominal_values(E),
                unumpy.std_devs(E)))), ............and so on
Run Code Online (Sandbox Code Playgroud)

我在列表中使用 ufloat

array123 = ufloat(nominalvalues, errors)
Run Code Online (Sandbox Code Playgroud)

经常这样做是因为它使处理错误变得非常容易。有谁知道一种简单的格式化方法吗?

"{:.2f}".format(unumpy.nominal_values(E))
TypeError: non-empty format string passed to object.__format__
Run Code Online (Sandbox Code Playgroud)

这不行。

提前致谢。

python format tabulate

4
推荐指数
1
解决办法
6515
查看次数

标签 统计

python ×2

fft ×1

format ×1

tabulate ×1