問題は非常に単純です。四次曲線をノイズのあるデータに当てはめます。Mldivide は、係数に対して誤った値のセットを提供しますが、疑似逆数の直接計算は機能します。
四次方程式: c0 + c1*t + c2*t^2 + c3*t^3 + c4*t^4
入力ファイルには、各サンプルの t と実際の値が含まれています。
fid = fopen('Data_Corr.txt');
A = zeros(4001,5);
for i = 1:4001
dataPt = fscanf(fid,'%f',2);
A(i,:) = [1 dataPt(1) dataPt(1)^2 dataPt(1)^3 dataPt(1)^4];
b(i) = dataPt(2);
end
%c = b\A; %using matlab mldivide
c = inv(A'*A)*A'*b; %computing pseudo inverse directly
for i = 1:4001
d(i) = A(i,1)*c(1) + A(i,2)*c(2) + A(i,3)*c(3) + A(i,4)*c(4) + A(i,5)*c(5);
end
figure; hold on; grid on;
plot(b,'-b');
plot(d,'r-');