2 views (last 30 days)

Show older comments

Hi everyone,

I wanna ask about how to use Polyfit Function or the other function in Matlab with a Matrix N x M.

If we use a 1 x N or N x 1 matrix, we can just input the data inside the Polyfit function and by using Polyval, it can be easily create an ouput of polynomial coefficient. For example :

orde = 2

x = [2:2:12]; %Declare an Independent Variable

y = [3.9572, 4.4854, 5.8003, 6.1419, 7.4218, 8.9157]; %Declare a dependent Variablecoefficient = polyfit(x, y, masukkan);

xc = [2:0.0001:12]; %Declare a data of fitting line to be plotted

coefficient = polyfit(x, y, orde);

yfit = polyval(coefficient, xc);

yc = polyval(coefficient, x); %Getting the output of xc by using polyval

%The output will become like this :

% Polinomial Polyfit : (0.0209)x^2 + (0.1919)x^1 + (3.5075)

%The coeffisient of polynomial on the above matrix is [0.0209, 0.1919,

%3.5075]

%Because we re using orde 2 of matrix

However, if i create a matrix with N x M dimension, we have to create an inversion by using Gaussian method, right?

So i have these datas :

x_kernel = rand(20, 15); %Synt Kernel Matrix M x N (20 x 15);

y_kernel = rand(20, 15); %Synt Kernel Matrix M x N (20 x 15);

% By using this formula :

% m = (G^T x G)^-1 x G^T x d,

% where m is coeffisient of polynomial [a, b, c, etc...]

% We can get the coeffisient of polynomial

And my question is, how to get polynomial coeffisien of those matrix kernels (x_kernel and y_kernel ) by using matlab 's function (maybe vandermonde matrix, polyfit, polyval, etc) So then we can plot the data by using x_kernel / y_kernel input versus the result of their polynomial equation?

Thank you very much, everyone...

Actually, this is one of my homework from my college, so iam so grateful if someone can tell me how to do that....

Steven Lord
on 8 Sep 2021

Do you want M polynomials, one per row, or do you want one polynomial for all your data? If the latter, just columnize your data.

A = magic(5);

B = A.^2 + 3*A + 5 + randn(size(A)); % Adding a little noise

c = polyfit(A(:), B(:), 2)

This looks pretty close to [1 3 5] to me.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!