📜  Python中的 Matplotlib.pyplot.csd()(1)

📅  最后修改于: 2023-12-03 15:34:23.440000             🧑  作者: Mango

Python中的 Matplotlib.pyplot.csd()

Matplotlib.pyplot是Python中非常流行的数据可视化库之一,拥有丰富的绘图函数和工具。csd()是其中的一个函数,用于计算和绘制信号的交叉功率谱密度。

函数签名
matplotlib.pyplot.csd(x, y, NFFT=256, Fs=None, Fc=None, detrend=, window=mlab.window_hanning, noverlap=, pad_to=, sides=, scale_by_freq=, return_line=)
参数说明
  • x:输入信号。可以是一个数组或一个序列。
  • y:输入信号。可以是一个数组或一个序列。
  • NFFT:傅里叶变换的点数,默认为256。
  • Fs:采样率。如果未指定,则默认为1.0。
  • Fc:如果指定,则是要在每个频率点处向结果添加实值偏移量的频率,否则(默认情况下)它为 0 Hz
  • detrend:指定是否执行线性趋势消除。默认为 mlab.detrend_none
  • window:指定信号的窗口函数。默认为 mlab.window_hanning
  • noverlap:指定窗口重叠的样本数。默认为None(重叠长度为NFFT/2)。
  • pad_to:指定扩展输入到整个长度的大小。默认为None(不填充)。
  • sides:指定输出的条目是一面还是两面的。默认为 ‘default’
  • scale_by_freq:指定是否根据每个频率点的数量缩放结果的 ‘density’,或使用‘default’(数量除以输入信号的长度)。
  • return_line:指定是否返回一个 Line2D 实例,如果 True 则返回一个包含 (Pxy, freqs) 的二元组。
返回值
  • Pxy:交叉功率谱密度。
  • freqs:计算出的频率值数组。
示例代码
import numpy as np
import matplotlib.pyplot as plt

# 创建两个信号
Fs = 1000
t = np.arange(0, 1, 1/Fs)
s1 = np.sin(2*np.pi*100*t)    # 100Hz正弦波信号
s2 = np.sin(2*np.pi*300*t)    # 300Hz正弦波信号

# 计算交叉功率谱密度
Pxy, freqs = plt.csd(s1, s2, Fs=Fs)

# 绘制结果图像
plt.plot(freqs, np.abs(Pxy))
plt.xlabel('Frequency (Hz)')
plt.ylabel('CSD')
plt.show()

该示例程序会生成一个绘制了输入信号的交叉功率谱密度图像的窗口,显示了两个信号在100Hz和300Hz上的相互作用。