首页 > 解决方案 > 绘制三角波的幅度谱

问题描述

我得到了一个周期性三角波(图 1),我需要绘制不同 \tau 值(\tau = T/2,\tau = T/4,\tau = T/)的幅度谱(如图 2) 16)。在 matplotlib 中有什么方法可以做到这一点吗?似乎scipy 三角函数甚至不允许用“间隙”定义三角波。来自 matplotlib 的幅度谱会产生“连续”图,而我需要“离散”图。

UPD:之前的问题是关于绘制傅里叶变换,但我发现这可能不是我想要的。

在此处输入图像描述 在此处输入图像描述

标签: pythonnumpymatplotlibsignal-processingfft

解决方案


这怎么样?

from scipy import signal
import matplotlib.pyplot as plt
import numpy as np

def ξ(x, a, τ):
    return [a*max(0, e) for e in -signal.sawtooth(τ * np.pi * x, 0.5)]

x = np.linspace(-3, 3, 400)
plt.plot(x, ξ(x, a=2, τ=1))  
plt.xlabel('x')
plt.ylabel('ξ')
plt.title('Fourier Transform')
plt.show()

在此处输入图像描述


推荐阅读