MATLAB 读取 Excel 数据并进行四次项函数拟合
% 指定文件路径和文件名
filePath = 'D:/桌面/暑假数模/第六次模拟赛题/B/111.xlsx';
sheetName = 'Sheet1';
% 读取Excel文件中的数据
data = xlsread(filePath, sheetName);
figure;
for tar=1:21
x1=[];y1=[];y2=[];
for i=1:114
if data(i,1)==tar
tmp=[x1,data(i,2)];x1=tmp;
tmp=[y1,data(i,3)];y1=tmp;
tmp=[y2,data(i,4)];y2=tmp;
end
end
% 拟合四次项函数
p = polyfit(x1, y1, 4);
% 计算拟合值
y_fit = polyval(p, x1);
% 计算总平方和
SS_total = sum((y1 - mean(y1)).^2);
% 计算残差平方和
SS_residual = sum((y1 - y_fit).^2);
% 计算调整后的 R 方
R_square = 1 - SS_residual / (length(y1) - 1) / (SS_total / (length(y1) - length(p) - 1));
disp(R_square)
end
代码说明:
filePath: 指定 Excel 文件的路径,使用正斜杠/分隔目录。sheetName: 指定要读取的 Excel 工作表名称。xlsread(filePath, sheetName): 读取指定工作表中的数据,并将数据存储到data变量中。figure: 创建一个图形窗口,用于绘制拟合结果。for tar=1:21: 循环遍历数据,将第一列数据中所有值为tar的行的数据分别存储到x1,y1,y2变量中。p = polyfit(x1, y1, 4): 对x1和y1进行四次项函数拟合,并将拟合结果存储到p变量中。y_fit = polyval(p, x1): 使用p变量中的拟合参数计算x1对应的拟合值,并将结果存储到y_fit变量中。SS_total: 计算总平方和,用于评估拟合效果。SS_residual: 计算残差平方和,用于评估拟合效果。R_square: 计算调整后的 R 方,用于评估拟合效果。disp(R_square): 输出调整后的 R 方值。
注意:
- 此代码假设 Excel 文件中第一列数据为目标值
tar,第二列数据为x1,第三列数据为y1,第四列数据为y2。 - 如果需要对其他列数据进行拟合,需要修改代码中的变量名和数据读取方式。
- 代码中
for循环的范围根据实际数据的行列数进行调整。 - 调整后的 R 方越接近 1,表示拟合效果越好。
- 可以使用
plot函数绘制拟合结果图,以便更直观地观察拟合效果。
代码运行:
- 将代码保存为
.m文件,例如fitting.m。 - 在 MATLAB 命令窗口中输入
fitting并回车,即可运行代码。
代码示例:
假设 Excel 文件名为 data.xlsx,并且包含以下数据:
| tar | x1 | y1 | y2 | |---|---|---|---| | 1 | 1 | 2 | 3 | | 1 | 2 | 4 | 6 | | 1 | 3 | 6 | 9 | | 2 | 4 | 8 | 12 | | 2 | 5 | 10 | 15 | | 2 | 6 | 12 | 18 |
将 filePath 修改为 'data.xlsx',运行代码后,将输出每个目标值 tar 对应的调整后的 R 方值。
总结:
本代码提供了一种使用 MATLAB 读取 Excel 数据并进行四次项函数拟合的方法,并计算了调整后的 R 方值来评估拟合效果。
希望这份代码能够帮助您进行数据分析和模型拟合。
原文地址: https://www.cveoy.top/t/topic/qB1i 著作权归作者所有。请勿转载和采集!