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('数据文件已生成。')

FFT 特征统计信息合并工具:提取 JSON 文件中的关键指标并计算平均值和标准差

原文地址: https://www.cveoy.top/t/topic/bQn1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录