我想为2和8输入1输出数据集创建一个二次多项式。
我已经在Matlab中编写了以下代码来执行该操作:
function [Coeff,R2,RMSE] = MultiLineRegression(x_var,y_var)
% This function carries out multivariate polynomial regression (MPR) analysis.
% The following stages are matrix manipulation to find the coefficients of
% the polynomial equation.
[n, p] = size(x_var);
nv = p;
np = 2;
k = nv*np;
B = repmat(eye(nv),np,1);
F = (1:1:np);
FT = transpose(F);
FTT = zeros(k,1);
for i=1:nv;
for j=1:np;
FTT(i+(j-1)*nv)= FT(j);
end;
end;
for i = 1:k;
for j=1:nv;
power_f(i,j) = B(i,j)*FTT(i);
end;
end;
for i = 1:nv;
power_f(k+1,i) = 0;
end;
nt = size(power_f,1);
M = ones(n,nt);
for i = 1:nt;
for j = 1:p;
M(:,i) = M(:,i).*x_var(:,j).^power_f(i,j);
end;
end;
Coeff = M\y_var;
y_calc = M *Coeff(:);
% Outputs coefficents which are in the order of x then x^2 with the last
% coefficent being the error
Coeff_fact = transpose(Coeff);
s_var = norm(y_var - y_calc);
R2 = 1 - (s_var/norm(y_var-mean(y_var)))^2;
RMSE = sqrt(mean((y_var - y_calc).^2));
我已经创建了输入矩阵和输出矢量,但是在尝试寻找repmat
和eye
的等效函数时遇到了麻烦。我正在尝试使用Math.net,因为我以前设法使用此程序包创建了平面拟合算法。
如果有人能够指出正确的方向,甚至是已经执行此任务的代码,也将不胜感激。