代码解释
本文中首先通过不完整、不规则的数据建立多元非线性回归模型,再通过建立的回归模型生成规范的、完整的数据,进而绘制平面热力图,并生成规范化数据构成的表格文件。
本文通过MATLAB2020a编写。
代码
clc
clear
%% 多元非线性回归分析
x = [0.01 0.025 0.05 0.1 0.01 0.025 0.05 0.1 0.01 0.025 0.05 0.1]';
y = [0 0 0 0 0.1 0.1 0.1 0.1 0.2 0.2 0.2 0.2]';
z = [10.155 10.47 18 42 12.63 12.9 23.8 55.7 16.38 16.7 31.6 77.8]';
% 建立因变量
X = [ones(size(x)) x y x.*y x.^2 y.^2];
% 建立线性回归
[b,bint,r] = regress(z,X);
Y = model_regress(x,y,b);
%% 计算生成数据
x_axis = [0.01 0.02 0.025 0.04 0.05 0.06 0.07 0.08 0.09 0.1];
y_axis = [0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2];
[x_out, y_out] = meshgrid(x_axis, y_axis);
[R,C] = size(x_out);
z = zeros(R,C);
for i = 1:R
for j = 1:C
z(i,j) = model_regress(x_out(i,j),y_out(i,j),b);
end
end
z = z';
%% 生成表格
T = table(z(:,1),z(:,2),z(:,3),z(:,4),z(:,5),z(:,6),z(:,7),z(:,8),z(:,9),z(:,10),z(:,11));
writetable(T,'Data_Out.xls')
h = heatmap(x_axis,y_axis,z');
h.CellLabelFormat = '%0.2f';
h.CellLabelColor = 'none';
grid off
colormap(jet)
%% 线性模型
function [y] = model_regress(x,y,b)
y = b(1) + b(2)*x + b(3)*y + b(4)*x.*y + b(5)*x.^2 + b(6)*y.^2;
end