```
%% 初始化环境
clc; clear; close all;
mkdir('NormalizedFits'); % 创建结果文件夹
mkdir('ComparisonPlot');
%% 任务1:读取所有结构体文件
fileList = dir('FitResult_*.mat'); % 获取文件列表
numFiles = length(fileList); % 文件数量
allFits = cell(numFiles, 1); % 预分配存储空间
% 预存储对比数据
compY = cell(numFiles, 1); % 归一化y轴数据
compXFit = cell(numFiles, 1); % 拟合曲线数据
legendLabels = cell(numFiles,1); % 图例标签
%% 循环处理每个特征
for i = 1:numFiles
% 加载数据(注意变量名可能不同)
data = load(fullfile(fileList(i).folder, fileList(i).name));
%% 任务2:数据归一化(Z-score标准化)
xRaw = data.xData(:);
yRaw = data.yData(:);
% 计算标准化参数
xNorm = (xRaw - mean(xRaw))/std(xRaw);
yNorm = (yRaw - mean(yRaw))/std(yRaw);
%% 任务3:三次多项式拟合
[coef, ~, mu] = polyfit(yNorm, xNorm, 3);
xEval = linspace(min(xNorm), max(xNorm), 100);
yFit = polyval(coef, xEval, [], mu); % 带归一化参数
%% 任务4:存储单变量结果图
fig = figure('Visible','off');
scatter(yNorm, xNorm, 40, 'filled', 'MarkerEdgeColor',[0.2 0.2 0.2],...
'MarkerFaceColor',[0.7 0.7 0.7], 'DisplayName','归一化数据');
hold on;
plot(xEval, yFit, 'LineWidth',2, 'Color',[0.8 0.2 0.2],...
'DisplayName','三次拟合');
% 图件美化
xlabel('归一化肌电特征值');
ylabel('归一化信号强度');
title(sprintf('特征: %s | RMSE: %.2f',...
data.dataName, data.rmseWindows(1)));
legend('Location','northwest');
grid on;
set(gca, 'FontSize',12, 'FontName','Microsoft YaHei');
% 保存结果
saveas(fig, fullfile('NormalizedFits',...
sprintf('%s_NormalizedFit.fig',data.dataName)));
saveas(fig, fullfile('NormalizedFits',...
sprintf('%s_NormalizedFit.png',data.dataName)));
close(fig);
%% 存储对比数据
compx{i} = xEval;
compyFit{i} = yFit;
legendLabels{i} = data.dataName;
end
%% 任务5-6:生成对比图
fig = figure('Color','w','Position',[100 100 1200 800]);
colorOrder = lines(numFiles); % 生成区分色
% 绘制所有拟合曲线
hold on;
for i = 1:numFiles
plot(compY{i}, compXFit{i},...
'LineWidth', 1.5,...
'Color', colorOrder(i,:),...
'DisplayName', legendLabels{i});
end
% 图件高级设置
xlabel('归一化特征值 (z-score)', 'FontSize',14);
ylabel('归一化信号强度 (z-score)', 'FontSize',14);
title('肌电特征三次拟合对比', 'FontSize',16);
legend('FontSize',10, 'NumColumns',2, 'Box','off');
grid on;
set(gca, 'LineWidth',1.2, 'FontSize',12,...
'XMinorGrid','on', 'YMinorGrid','on');
% 保存对比图
saveas(fig, fullfile('ComparisonPlot','AllFeatures_Comparison.fig'));
saveas(fig, fullfile('ComparisonPlot','AllFeatures_Comparison.png'));
close(fig);
disp('====== 处理完成 ======');```这代码画出来的图横纵坐标是反的
最新发布