Fourier series expansion using the Curve Fitting Tool

조회 수: 2 (최근 30일)
Jeff
Jeff 2017년 11월 18일
편집: Jeff 2017년 11월 18일
I have some very perplexing results I obtained using the Curve Fitting Tool which I am having difficulty interpreting and reconciling the results. This is the 1st time I used this tool so I hope someone with some experience can assist me with the results I obtained. I am using MATLAB 2012b.
I used the code below to generate a pressure profile vs time. The time vector & the P results I have attached in the Pdata.mat file.
A=1; p=A*(1-time/0.01).*exp(-time/0.01);
I used the code generation wizard within the Curve Fitting Tool to generate the m-file that is attached. Within that m-file the following initial guess at the Fourier series coefficients:
opts.StartPoint = [7.1054e-15 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12.5664];
I then executed the FIT operation & the results for Fourier series coefficients are in the .txt file. I then copied those results & pasted them into MATLABcurvefit.m to check the results. I got nothing that resembled what is in Pdata.mat. Despite this discrepancy the Curve Fitting Tool generated fitted curve depicted in curve fit results.jpg. The fit depicted here is EXCELLENT!
So I am completely BAFFLED. How does the Curve Fitting Tool show excellent results, yet when I used the results from the .txt file in MATLABcurvefit.m the results are dreadful?
Really would appreciate an explanation.
  댓글 수: 1
Jeff
Jeff 2017년 11월 18일
OK, so I need more significant figures? How do I get the Curve Fit Tool to output the results with more sig figs?

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

채택된 답변

John D'Errico
John D'Errico 2017년 11월 18일
편집: John D'Errico 2017년 11월 18일
Almost always when someone complains of exactly this problem, it is because they did not in fact use the correct coefficients. Instead, they copied 4 significant digits, pasted them in. But MATLAB did not estimate 5 digits. So what did you do?
Here are the coefficients from the text file, exactly as you said.
a0 = 2.589e+07 (1.61e+07, 3.567e+07)
a1 = -2.918e+07 (-4.097e+07, -1.739e+07)
b1 = -3.622e+07 (-4.928e+07, -2.317e+07)
a2 = -7.159e+06 (-8.454e+06, -5.865e+06)
b2 = 3.284e+07 (2.019e+07, 4.55e+07)
a3 = 1.73e+07 (1.139e+07, 2.321e+07)
b3 = -8.643e+06 (-1.298e+07, -4.311e+06)
a4 = -7.895e+06 (-1.112e+07, -4.667e+06)
b4 = -3.616e+06 (-4.282e+06, -2.951e+06)
a5 = 7.232e+05 (1.553e+05, 1.291e+06)
b5 = 2.853e+06 (1.888e+06, 3.819e+06)
a6 = 4.273e+05 (3.462e+05, 5.083e+05)
b6 = -5.679e+05 (-8.266e+05, -3.092e+05)
a7 = -1.092e+05 (-1.471e+05, -7.122e+04)
b7 = 3528 (-1.4e+04, 2.105e+04)
a8 = 5249 (2399, 8099)
b8 = 6116 (4905, 7326)
w = 3.406 (3.325, 3.488)
Then look at what you did...
a0=2.589e+07;
a1=-2.918e+07;
b1=-3.622e+07;
a2=-7.159e+06;
b2=3.284e+07;
...
And, exactly as I said, you used 4 digit approximations to a list of numbers. That is a BAD idea. It is assured to result in crapola. What did you get? Yep. Crapola.
The point is, you did not in fact use the results. You used a poor approximation to the results, and you got a poor result. SURPRISE!
  댓글 수: 4
Jeff
Jeff 2017년 11월 18일
OK, you are doing this in the command window. I was using the Curve Fitting Tool GUI. I cannot seem to find where or how to adjust the format of the output results for the coefficients. Have you worked with that GUI & know how to adjust the format?
Jeff
Jeff 2017년 11월 18일
편집: Jeff 2017년 11월 18일
Thank you for your assistance. It works. The one thing that bothers me is that P vs t curve is less than unity. I am a bit miffed that the coefficients for the Fourier components are so HUGE, on the order of 10^7. This concerns me on a sensitivity issue. Nonetheless, this does work.
THANKS

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by