필터 지우기
필터 지우기

fit a curve to data without using curve fitting toolbox

조회 수: 10 (최근 30일)
Anqi Li
Anqi Li 2014년 12월 12일
댓글: Andreas Goser 2014년 12월 12일
I have a set of data=[x1 x2] which looks periodical. I want to fit them into this Fourier transform equation:
x2 = A1 + A2.*sin(x1) + A3.*cos(x1) + A4.*sin(2*x1) + A5.*cos(2*x1)
by using least squares optimisation to know the optimum A = [A1;A2;A3;A4;A5]
I don't have curve fitting toolbox. please let me know how to do it without using toolbox.
  댓글 수: 1
Andreas Goser
Andreas Goser 2014년 12월 12일
I see you already have answers, but I wonder why you do not have the Curve Fitting Toolbox. Is the information about the university you work at current (your profile)?

댓글을 달려면 로그인하십시오.

채택된 답변

Mohammad Abouali
Mohammad Abouali 2014년 12월 12일
편집: Mohammad Abouali 2014년 12월 12일
Assuming your X1 and X2 are vector, i.e. size(x1)=size(x2)=[N 1] and N>=5 (since there are 5 coefficients, A1 to A5); then
C=[ones(numel(x1),1) sin(x1(:)) cos(x1(:)) sin(2*x1(:)) cos(2*x1(:))];
A=(C'*C)\(C'*x2(:));
or even:
A=C\x2(:);
  댓글 수: 6
Mohammad Abouali
Mohammad Abouali 2014년 12월 12일
so x2(:) makes sure that your data is a column vector data, i.e. size(x2(:))=[N 1]. I just wanted to be sure that it is not a row data but a vertical column vector. If it is already a column vector you can just replace it with X2 and drop (:).
A=C\x2 conceptually is pretty much solving C*A=x2; Your system of equations can be written as matrix C (the one with sine and cosine functions) multiplied by the unknown column vector, and x2 is your known variable vectors. once you do A=C\x2 pretty much you are solving the system of linear-equations. This operation is known as mldivide. If you want to know more about it go to mldivide help section, there you can find more information on how to use this.
Anqi Li
Anqi Li 2014년 12월 12일
It's very useful! thank you very much!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by