读取多个故障振动信号的csv文件,每个csv文件只有一列数据,将读取的数据进行ICEEMDAN处理,接着将处理好的数据重新合成,最后将合成的数据保存在以各csv文件名字命名的文件夹内。请给出完整的python代码
时间: 2024-05-12 14:20:11 浏览: 230
```python
import os
import csv
import numpy as np
from PyEMD import EMD
# 定义ICEEMDAN函数
def ICEEMDAN(data, max_imf=4):
emd = EMD()
imfs = emd(data)
imfs = imfs[:max_imf]
return imfs
# 读取csv文件并进行处理
def process_file(file_path):
with open(file_path, 'r') as f:
reader = csv.reader(f)
data = [float(row[0]) for row in reader]
imfs = ICEEMDAN(data)
combined_data = np.sum(imfs, axis=0)
return combined_data
# 获取所有csv文件路径
csv_dir = 'path/to/csv/folder'
csv_files = [os.path.join(csv_dir, f) for f in os.listdir(csv_dir) if f.endswith('.csv')]
# 遍历所有csv文件并进行处理
for csv_file in csv_files:
combined_data = process_file(csv_file)
# 保存处理后的数据
file_name = os.path.basename(csv_file)
file_name_without_ext = os.path.splitext(file_name)[0]
output_dir = os.path.join(csv_dir, file_name_without_ext)
if not os.path.exists(output_dir):
os.makedirs(output_dir)
output_file = os.path.join(output_dir, 'processed.csv')
with open(output_file, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(combined_data)
```
阅读全文