如何修改Matlab代码实现批量CSV文件均值提取与特征导出
MATLAB代码修改方案:从单文件均值提取全局特征并保存结果
核心修改思路
原代码是对每个CSV的第5行单独计算特征,现在调整为:
- 读取每个CSV的全部数据,计算该文件所有数据的单个均值
- 收集所有117个文件的均值,形成一个数组
- 基于这个均值数组,统一计算最大值、最小值、峰度、偏度、标准差这几个全局特征
- 将所有计算结果保存到单个文件中
修改后的完整代码
close all clear all % 填写你的CSV文件夹路径 file_location = '你的CSV文件所在文件夹路径'; % 创建文件数据存储,读取所有CSV文件 emptyroomdata = fileDatastore(fullfile(file_location), 'ReadFcn', @importdata, 'FileExtensions', '.csv'); fullFileNames = emptyroomdata.Files; numfiles = length(fullFileNames); % 读取所有文件数据 data = readall(emptyroomdata); % 初始化数组存储每个文件的均值 file_means = []; % 遍历每个文件,计算全数据的均值 for k = 1:numfiles % 获取当前文件的全部数值数据 current_data = data{k,1}.data; % 将二维数组转一维后求均值,确保是整个文件所有数据的平均 current_mean = mean(current_data(:)); % 存入均值数组 file_means = [file_means, current_mean]; end % 基于所有文件的均值数组,计算全局特征 global_max = max(file_means); global_min = min(file_means); global_kurtosis = kurtosis(file_means); global_skewness = skewness(file_means); global_std = std(file_means); % 将结果整理成表格,方便保存和查看 results_table = table(... {'最大值'; '最小值'; '峰度'; '偏度'; '标准差'}, ... [global_max; global_min; global_kurtosis; global_skewness; global_std], ... 'VariableNames', {'特征名称', '特征值'}); % 保存结果到CSV文件(若需MATLAB专用格式,可换成save('全局特征结果.mat', 'results_table')) writematrix(results_table, '全局特征结果.csv'); % 命令行打印结果(可选) disp('计算完成,结果已保存到 全局特征结果.csv'); disp(results_table);
关键修改说明
- 均值计算逻辑:用
mean(current_data(:))把每个文件的二维数据转成一维后求均值,避免按列/行求均值的错误,确保是整个文件所有数值的平均 - 特征计算时机:先收集所有文件的均值,再一次性计算全局特征,完全匹配需求
- 结果保存:用
table整理结果后通过writematrix保存为CSV,兼容性强;也可根据需求换成MATLAB专属的.mat格式保存
内容的提问来源于stack exchange,提问作者MD. Irteeja Kobir
相关产品推荐
相关产品推荐

