import numpy as np
import matplotlib.pyplot as plt
import csv
设置信号1的CSV文件路径
signal1_file = r’E:\AI诊断\bearing_fault_diagnosis-main\data\superposition signal.csv’
读取信号1的数据
signal1_data = []
with open(signal1_file, ‘r’) as file:
csv_reader = csv.reader(file)
for row in csv_reader:
signal1_data.extend([float(value) for value in row])
创建离散信号
n = np.arange(len(signal1_data)) # 离散时间轴
signal1 = np.array(signal1_data) # 第一个离散信号
信号1的离散单边谱
signal1_fft = np.fft.fft(signal1)
signal1_freq = np.abs(signal1_fft[:len(signal1) // 2])
freq = np.fft.fftfreq(len(signal1))[:len(signal1) // 2]
信号2的数据
signal2 = 0.1 * np.sin(2 * np.pi * 10 * n / len(signal1_data)) # 第二个离散信号,频率为10Hz
信号2的离散单边谱
signal2_fft = np.fft.fft(signal2)
signal2_freq = np.abs(signal2_fft[:len(signal2) // 2])
叠加信号
combined_signal = signal1 + signal2
叠加信号的离散单边谱
combined_signal_fft = np.fft.fft(combined_signal)
combined_signal_freq = np.abs(combined_signal_fft[:len(combined_signal) // 2])
绘制时域和离散单边谱
plt.figure(figsize=(12, 8))
信号1的时域和离散单边谱
plt.subplot(3, 2, 1)
plt.stem(n, signal1, linefmt=‘b-’, markerfmt=’ ‘)
plt.title(‘Signal 1 - Time Domain’)
plt.subplot(3, 2, 2)
plt.stem(freq, signal1_freq, linefmt=‘b-’, markerfmt=’ ')
plt.title(‘Signal 1 - Discrete Single-Sided Spectrum’)
信号2的时域和离散单边谱
plt.subplot(3, 2, 3)
plt.stem(n, signal2, linefmt=‘b-’, markerfmt=’ ‘)
plt.title(‘Signal 2 - Time Domain’)
plt.subplot(3, 2, 4)
plt.stem(freq, signal2_freq, linefmt=‘b-’, markerfmt=’ ')
plt.title(‘Signal 2 - Discrete Single-Sided Spectrum’)
叠加信号的时域和离散单边谱
plt.subplot(3, 2, 5)
plt.stem(n, combined_signal, linefmt=‘b-’, markerfmt=’ ‘)
plt.title(‘Combined Signal - Time Domain’)
plt.subplot(3, 2, 6)
plt.stem(freq, combined_signal_freq, linefmt=‘b-’, markerfmt=’ ')
plt.title(‘Combined Signal - DiscreteSingle-Sided Spectrum’)
plt.tight_layout()
plt.show()