如何使用Python绘制单列及10列矩阵含噪ASCII数据的噪声频谱
依赖安装
首先安装所需依赖库:
pip install numpy matplotlib scipy
完整实现代码
import numpy as np import matplotlib.pyplot as plt from scipy.signal import welch def plot_noise_spectrum(file_path, sampling_freq): """ 绘制ASCII数据的噪声频谱 :param file_path: 数据文件路径 :param sampling_freq: 数据采样频率(单位:Hz,需替换为你的实际采样率) """ # 读取ASCII数据,自动适配单列/多列格式 data = np.loadtxt(file_path) # 统一转换为二维数组格式处理 if len(data.shape) == 1: data = data.reshape(-1, 1) # 使用Welch法计算功率谱密度,更适合噪声分析 freqs, psd = welch(data, fs=sampling_freq, nperseg=1024) # 绘制频谱 plt.figure(figsize=(10, 6)) if psd.shape[1] == 1: plt.semilogy(freqs, psd[:, 0], label='单列数据噪声谱') else: for col_idx in range(psd.shape[1]): plt.semilogy(freqs, psd[:, col_idx], label=f'第{col_idx+1}列噪声谱') plt.xlabel('频率 (Hz)') plt.ylabel('功率谱密度 (PSD)') plt.title('噪声频谱分析') plt.grid(which='both', linestyle='--', alpha=0.7) plt.legend() plt.tight_layout() plt.show() # 使用示例 if __name__ == '__main__': # 替换为你的实际文件路径和采样频率 # 绘制单列文件频谱 plot_noise_spectrum('single_column_data.txt', sampling_freq=100) # 绘制10列矩阵文件频谱 plot_noise_spectrum('matrix_10col_data.txt', sampling_freq=100)
注意事项
- 代码会自动识别输入文件是单列还是多列格式,无需手动指定
- 必须将
sampling_freq参数替换为你的实际数据采样频率,否则频率轴数值会有偏差 - 可调整
welch方法的nperseg参数平衡频谱分辨率和平滑度,数值越大频率分辨率越高 - 若不需要对数坐标显示,将
semilogy替换为plot即可使用线性坐标
内容的提问来源于stack exchange,提问作者manas
相关产品推荐
相关产品推荐

