赞
踩
第一题:
1.用MATLAB画出各物质浓度与RGB值的散点图(表格得事先导入成矩阵形式或储存在电脑MATLAB目录下)
- data = xlsread('filename.xlsx');
-
- % 指定需要使用的数据范围
- startRow = 2; % 数据起始行
- endRow = 20; % 数据结束行
-
- % 提取指定范围内的R、G、B和浓度值,其中4表示R值在导入表格的第3列,以此类推
- R_values = data(startRow:endRow, 4);
- G_values = data(startRow:endRow, 3);
- B_values = data(startRow:endRow, 2);
- concentration = data(startRow:endRow, 1);
-
- % 绘制RGB值与浓度的散点图
- figure;
- scatter3(R_values, G_values, B_values, [], concentration, 'filled');
- colorbar;
-
- % 设置图形标题和轴标签
- title('RGB值与浓度的散点图');
- xlabel('R值');
- ylabel('G值');
- zlabel('B值');
上述代码中,将浓度数据添加到散点图中的颜色映射中,通过设置参数'filled'
来填充散点。因此,颜色代表浓度的变化。
用以上代码画出来的图长这样:
注意:如果感觉散点图看不太清楚数据的总体趋势可以采用MATLAB绘制浓度与RGB折线图
- startRow = 25;
- endRow =31 ;
- concentration = data(startRow:endRow,2);
- B = data(startRow:endRow,3);
- G = data(startRow:endRow,4);
- R=data(startRow:endRow,5);
- figure;
- plot(concentration, B, 'o-', 'DisplayName', 'B');
- hold on;
- plot(concentration, G, 'o-', 'DisplayName', 'G');
- plot(concentration, R, 'o-', 'DisplayName', 'R');
- hold off;
- title('浓度与RGB折线图');
- xlabel('浓度值(ppm)');
- ylabel('RGB 值');
- legend();
2.用MATLAB绘制出浓度与HS值散点图
- startRow = 25;
- endRow =31 ;
-
- concentration = data(startRow:endRow,2);
- % H值数据
- h_values = data(startRow:endRow,6);
- % S值数据
- s_values = data(startRow:endRow,7);
- figure;
- scatter(concentration, h_values, 'b', 'filled');
- hold on;
- scatter(concentration, s_values, 'r', 'filled');
- hold off;
- title('浓度与H、S值的散点图');
- xlabel('浓度');
- ylabel('H值和S值');
- legend('H值', 'S值');
3..用MATLAB绘画出物质浓度与灰度值的散点图(灰度值要通过事先计算,在这就不放出代码了。)
在以上代码中原本一开始用了最累的方法,把灰度值和浓度一个个敲上去,这里可以参考上面RGB散点图的代码,前提是要将灰度值计算结果一并加入表格导入(导入在每种物质的浓度后)
这是代码画出来的浓度与灰度值的散点图:
4.进行模型的线性回归拟合(此处运用 MATLAB 的线性回归函数 fitlm ,没有用regress函数)
Estimate
(估计值)SE
(标准误差)tStat
(t 统计量)pValue
(p 值)注意:由于工业碱情况有所不同,此处须用MATLAB绘制出残差散点图判断哪一组数据异常需要抛弃:
以上仅对组胺,溴酸钾,工业碱的灰色模型进行绘图与分析,硫酸铝钾与奶中尿素,以及数据评判在这里不做演示。
第二题:
- concentration =data1(:,1) ; % 自变量-浓度
- grayscale = data1(:,7); % 因变量-灰度值
-
- coefficients = polyfit(concentration, log(grayscale), 1); % 对灰度值取对数后进行一次线性回归
-
- % 提取得到的拟合方程系数
- a = coefficients(1); % 斜率
- b = exp(coefficients(2)); % 截距,将指数项还原为实际值
-
- % 构建拟合方程字符串(y = b * exp(ax))
- fit_equation = strcat('y = ', num2str(b), ' * exp(', num2str(a), 'x)');
-
- % 显示拟合方程
- disp(fit_equation);
-
- % 绘制原始数据散点图和拟合曲线
- figure;
- scatter(concentration, grayscale, 'filled');
- hold on;
- x = min(concentration):max(concentration);
- y = b * exp(a*x);
- plot(x, y, 'r', 'LineWidth', 2);
- xlabel('浓度');
- ylabel('灰度值');
- legend('原始数据', '拟合曲线');
请根据以上得到的拟合公式修改下面计算误差的代码参数:
- fit_grayscale = 138.5423 * exp(-0.0010143 * concentration);%请根据算出的拟合公式修改代码数值
-
- % 计算相对误差(百分比)
- relative_error = abs((fit_grayscale - grayscale) ./ grayscale) * 100;
-
- % 计算绝对误差
- absolute_error = abs(fit_grayscale - grayscale);
-
- % 显示相对误差和绝对误差
- disp('相对误差(百分比):');
- disp(relative_error);
- disp('绝对误差:');
- disp(absolute_error);
再根据得出的误差与拟合图判断是否要舍弃部分数据,再继续进行误差分析得出结论。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。