FFT 特征统计信息合并工具:提取 JSON 文件中的关键指标并计算平均值和标准差
import os import json import numpy as np
指定输入文件夹路径和输出文件路径
input_folder = r'D:\FIT成型云健康管理模块\data(第二周)\training_data_results\FFT\test\训练阶段\特征提取' output_file = r'D:\FIT成型云健康管理模块\data(第二周)\training_data_results\FFT\test\训练阶段\特征统计信息\combined_data.json'
获取输入文件夹中的所有文件名
input_files = os.listdir(input_folder)
创建一个字典来存储每个channel的数据
channel_data = {}
循环遍历每个JSON文件
for filename in input_files: if filename.endswith('.json'): file_path = os.path.join(input_folder, filename) if os.path.isfile(file_path): with open(file_path, 'r') as file: data = json.load(file) for channel in range(1, 19): if channel not in channel_data: channel_data[channel] = { 'main_frequency_max': -float('inf'), 'main_frequency_min': float('inf'), 'main_frequency_total': 0, 'main_frequency_list': [],
'main_amplitude_max': -float('inf'),
'main_amplitude_min': float('inf'),
'main_amplitude_total': 0,
'main_amplitude_list': [],
'spectral_width_max': -float('inf'),
'spectral_width_min': float('inf'),
'spectral_width_total': 0,
'spectral_width_list': [],
'spectral_kurtosis_max': -float('inf'),
'spectral_kurtosis_min': float('inf'),
'spectral_kurtosis_total': 0,
'spectral_kurtosis_list': [],
}
channel_values = data.get(f'channel{channel}')
if channel_values:
main_frequency = channel_values.get('main_frequency', 0)
main_amplitude = channel_values.get('main_amplitude', 0)
spectral_width = channel_values.get('spectral_width', 0)
spectral_kurtosis = channel_values.get('spectral_kurtosis', 0)
channel_data[channel]['main_frequency_max'] = max(main_frequency, channel_data[channel]['main_frequency_max'])
channel_data[channel]['main_frequency_min'] = min(main_frequency, channel_data[channel]['main_frequency_min'])
channel_data[channel]['main_frequency_total'] += main_frequency
channel_data[channel]['main_frequency_list'].append(main_frequency)
channel_data[channel]['main_amplitude_max'] = max(main_amplitude, channel_data[channel]['main_amplitude_max'])
channel_data[channel]['main_amplitude_min'] = min(main_amplitude, channel_data[channel]['main_amplitude_min'])
channel_data[channel]['main_amplitude_total'] += main_amplitude
channel_data[channel]['main_amplitude_list'].append(main_amplitude)
channel_data[channel]['spectral_width_max'] = max(spectral_width, channel_data[channel]['spectral_width_max'])
channel_data[channel]['spectral_width_min'] = min(spectral_width, channel_data[channel]['spectral_width_min'])
channel_data[channel]['spectral_width_total'] += spectral_width
channel_data[channel]['spectral_width_list'].append(spectral_width)
channel_data[channel]['spectral_kurtosis_max'] = max(spectral_kurtosis, channel_data[channel]['spectral_kurtosis_max'])
channel_data[channel]['spectral_kurtosis_min'] = min(spectral_kurtosis, channel_data[channel]['spectral_kurtosis_min'])
channel_data[channel]['spectral_kurtosis_total'] += spectral_kurtosis
channel_data[channel]['spectral_kurtosis_list'].append(spectral_kurtosis)
创建输出字典
output_data = {} for channel, values in channel_data.items():
values['main_frequency_avg'] = values['main_frequency_total'] / len(input_files)
values['main_frequency_std'] = np.std(values['main_frequency_list'])
del values['main_frequency_list']
del values['main_frequency_total']
values['main_amplitude_avg'] = values['main_amplitude_total'] / len(input_files)
values['main_amplitude_std'] = np.std(values['main_amplitude_list'])
del values['main_amplitude_list']
del values['main_amplitude_total']
values['spectral_width_avg'] = values['spectral_width_total'] / len(input_files)
values['spectral_width_std'] = np.std(values['spectral_width_list'])
del values['spectral_width_list']
del values['spectral_width_total']
values['spectral_kurtosis_avg'] = values['spectral_kurtosis_total'] / len(input_files)
values['spectral_kurtosis_std'] = np.std(values['spectral_kurtosis_list'])
del values['spectral_kurtosis_list']
del values['spectral_kurtosis_total']
output_data[f'channel{channel}'] = values
将数据保存到一个文件中
with open(output_file, 'w') as output_file: json.dump(output_data, output_file)
print('数据文件已生成。')
原文地址: https://www.cveoy.top/t/topic/bQn1 著作权归作者所有。请勿转载和采集!