<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172246</link>
    <title>MATLAB Central Newsreader - solution/fit for f(x)=A*cos(B*x)</title>
    <description>Feed for thread: solution/fit for f(x)=A*cos(B*x)</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Wed, 09 Jul 2008 04:09:21 -0400</pubDate>
      <title>solution/fit for f(x)=A*cos(B*x)</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172246#441947</link>
      <author>Leaf Man</author>
      <description>Hello,&lt;br&gt;
&lt;br&gt;
I'm trying to solve f(x)=A*cos(B*x) to get estimates of the parameters A and B where I have a vector for f(x),x. I'm also looking to give a confidence interval for f(x)=Acos(Bx) given f(x),x and report errors for A and B. Any help would be much appreciated!&lt;br&gt;
&lt;br&gt;
Thanks.</description>
    </item>
    <item>
      <pubDate>Wed, 09 Jul 2008 07:29:02 -0400</pubDate>
      <title>Re: solution/fit for f(x)=A*cos(B*x)</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172246#441973</link>
      <author>Miroslav Balda</author>
      <description>Leaf Man &amp;lt;imiller25@live.com&amp;gt; wrote in message&lt;br&gt;
&amp;lt;24427446.1215576592399.JavaMail.jakarta@nitrogen.mathforum.org&amp;gt;...&lt;br&gt;
&amp;gt; Hello,&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; I'm trying to solve f(x)=A*cos(B*x) to get estimates of&lt;br&gt;
the parameters A and B where I have a vector for f(x),x. I'm&lt;br&gt;
also looking to give a confidence interval for f(x)=Acos(Bx)&lt;br&gt;
given f(x),x and report errors for A and B. Any help would&lt;br&gt;
be much appreciated!&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Thanks.&lt;br&gt;
&lt;br&gt;
Hi&lt;br&gt;
&lt;br&gt;
If nobody answers, I am sending you a dirty solution of a&lt;br&gt;
simulated example:&lt;br&gt;
&lt;br&gt;
% acosbx.m&lt;br&gt;
% Model parameters:&lt;br&gt;
a = 10;&lt;br&gt;
b = 3;&lt;br&gt;
x = (0:.125:5)';&lt;br&gt;
y = a*cos(b*x) + randn(size(x)); % cosine with noise&lt;br&gt;
plot(x,y,'or')&lt;br&gt;
% Solution:&lt;br&gt;
ae = max(y);   % Initial guess of a&lt;br&gt;
w  = acos(y/ae)./x;&lt;br&gt;
I  = find(diff(w)&amp;lt;0);&lt;br&gt;
J  = find(diff(I)==1);&lt;br&gt;
be = mean(w(I(2:round(end/3))));   % Initial guess of b&lt;br&gt;
fx = @(c) c(1)*cos(c(2)*x) - y;&lt;br&gt;
[c,ssq,cnt] = LMFnlsq(fx,[ae,be])  % from FEX, Id 17534&lt;br&gt;
c = real(c);&lt;br&gt;
hold on&lt;br&gt;
plot(x,fx(c)+y)&lt;br&gt;
hold off&lt;br&gt;
&lt;br&gt;
The solution c = [a; b] has been obtained in 5 iterations:&lt;br&gt;
&lt;br&gt;
&amp;gt;&amp;gt; acosbx&lt;br&gt;
ae =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;11.0337&lt;br&gt;
be =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.0964&lt;br&gt;
c =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9.7358&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2.9971&lt;br&gt;
ssq =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;45.5168&lt;br&gt;
cnt =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;br&gt;
&lt;br&gt;
Mira</description>
    </item>
    <item>
      <pubDate>Wed, 09 Jul 2008 18:52:02 -0400</pubDate>
      <title>Re: solution/fit for f(x)=A*cos(B*x)</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172246#442097</link>
      <author>Miroslav Balda</author>
      <description>&quot;Miroslav Balda&quot; &amp;lt;balda.nospam@cdm.it.cas.cz&amp;gt; wrote in&lt;br&gt;
message &amp;lt;g51pbu$5ln$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&lt;br&gt;
Hi&lt;br&gt;
&lt;br&gt;
I analyzed the problem in more detail and found a clean&lt;br&gt;
solution in initial guess. Here is the final code:&lt;br&gt;
&lt;br&gt;
% acosbx.m&lt;br&gt;
% Model parameters:&lt;br&gt;
a = 10;&lt;br&gt;
b = 3;&lt;br&gt;
x = (0:.125:5)';&lt;br&gt;
y = a*cos(b*x) + randn(size(x)); % cosine with noise&lt;br&gt;
plot(x,y,'or')&lt;br&gt;
&lt;br&gt;
% Solution:&lt;br&gt;
L = extr(abs(y));       %   from FEX, Id 10272&lt;br&gt;
if L{1}(end)==true, L{1}(end)=false; end&lt;br&gt;
ymax = y(L{1});&lt;br&gt;
ae = mean(abs(ymax));   %   mean of all extremes&lt;br&gt;
be = 2*length(xmax)/(xmax(end)-1);% Initial guess of b&lt;br&gt;
fx = @(c) c(1)*cos(c(2)*x) - y;&lt;br&gt;
[c,ssq,cnt] = LMFnlsq(fx,[ae,be]) % from FEX, Id 17534&lt;br&gt;
c = real(c);&lt;br&gt;
hold on&lt;br&gt;
plot(x,fx(c)+y), grid&lt;br&gt;
hold off&lt;br&gt;
&lt;br&gt;
The solution has been found as follows:&lt;br&gt;
&lt;br&gt;
&amp;gt;&amp;gt; acosbx&lt;br&gt;
c =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9.5286&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3.0080&lt;br&gt;
ssq =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;42.9551&lt;br&gt;
cnt =&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;br&gt;
Hope it helps.&lt;br&gt;
&lt;br&gt;
Mira</description>
    </item>
    <item>
      <pubDate>Thu, 10 Jul 2008 04:24:54 -0400</pubDate>
      <title>Re: solution/fit for f(x)=A*cos(B*x)</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172246#442181</link>
      <author>Greg Heath</author>
      <description>On Jul 9, 12:09=A0am, Leaf Man &amp;lt;imille...@live.com&amp;gt; wrote:&lt;br&gt;
&amp;gt; Hello,&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; I'm trying to solve f(x)=3DA*cos(B*x) to get estimates of the parameters =&lt;br&gt;
A and B where I have a vector for f(x),x. I'm also looking to give a confid=&lt;br&gt;
ence interval for f(x)=3DAcos(Bx) given f(x),x and report errors for A and =&lt;br&gt;
B. Any help would be much appreciated!&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; Thanks.&lt;br&gt;
&lt;br&gt;
F =3D fft(f);&lt;br&gt;
&lt;br&gt;
etc&lt;br&gt;
&lt;br&gt;
Hope this helps.&lt;br&gt;
&lt;br&gt;
Greg</description>
    </item>
    <item>
      <pubDate>Thu, 10 Jul 2008 08:26:59 -0400</pubDate>
      <title>Re: solution/fit for f(x)=A*cos(B*x)</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172246#442196</link>
      <author>Greg Heath</author>
      <description>On Jul 10, 12:24=A0am, Greg Heath &amp;lt;he...@alumni.brown.edu&amp;gt; wrote:&lt;br&gt;
&amp;gt; On Jul 9, 12:09=A0am, Leaf Man &amp;lt;imille...@live.com&amp;gt; wrote:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt; Hello,&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt; I'm trying to solve f(x)=3DA*cos(B*x) to get estimates of the parameter=&lt;br&gt;
s A and B where I have a vector for f(x),x. I'm also looking to give a conf=&lt;br&gt;
idence interval for f(x)=3DAcos(Bx) given f(x),x and report errors for A an=&lt;br&gt;
d B. Any help would be much appreciated!&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; &amp;gt; Thanks.&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; F =3D fft(f);&lt;br&gt;
&lt;br&gt;
Example:&lt;br&gt;
&lt;br&gt;
close all, clear all, clc, k =3D 0&lt;br&gt;
&lt;br&gt;
a0  =3D 10;   b0  =3D 3;   t   =3D (0:0.125:5)';&lt;br&gt;
N  =3D length(t)                         % N =3D 41 (odd),&lt;br&gt;
dt =3D 0.125,   T  =3D 5+dt            % T =3D  5.125&lt;br&gt;
&lt;br&gt;
y0          =3D a0*cos(b0*t);&lt;br&gt;
meany0  =3D mean(y0)              % 0.4473&lt;br&gt;
stdy0     =3D std(y0)                   % 7.0850&lt;br&gt;
&lt;br&gt;
randn('state',0)&lt;br&gt;
n        =3D 0.1*stdy0*randn(N,1);&lt;br&gt;
meann =3D mean(n)                  % 0.0788&lt;br&gt;
stdn    =3D std(n)                       % 0.6770&lt;br&gt;
&lt;br&gt;
y1        =3D y0 + n;                   % cosine with noise&lt;br&gt;
SNRdB =3D 10*log10(var(y0)/var(n))  % 20.3956&lt;br&gt;
&lt;br&gt;
k =3D k+1, figure(k),hold on&lt;br&gt;
plot(t,y0),&lt;br&gt;
plot(t,y1,'ro')&lt;br&gt;
&lt;br&gt;
meany1 =3D mean(y1)                  % 0.5261&lt;br&gt;
y          =3D y1 - meany1;&lt;br&gt;
y01      =3D y0 - meany0;&lt;br&gt;
&lt;br&gt;
k =3D k+1, figure(k), hold on&lt;br&gt;
plot(t,y01),hold on&lt;br&gt;
plot(t,y,'ro'),hold on&lt;br&gt;
&lt;br&gt;
% Solution:&lt;br&gt;
df  =3D 1/T                               % 0.1951&lt;br&gt;
dfM =3D b0/(2*pi)/10                 % 0.0477&lt;br&gt;
M   =3D ceil(N*df/dfM)               % 168&lt;br&gt;
&lt;br&gt;
f   =3D dfM*(0:M-1)';&lt;br&gt;
Q  =3D ceil((M+1)/2)                 % 85&lt;br&gt;
fQ =3D (Q-1)*dfM                     % 4.0107&lt;br&gt;
fb =3D f-fQ;&lt;br&gt;
&lt;br&gt;
Y  =3D dt*fft(y,M);&lt;br&gt;
&lt;br&gt;
Yb         =3D fftshift(Y);&lt;br&gt;
ReYb     =3D real(Yb);&lt;br&gt;
ImYb      =3D imag(Yb);&lt;br&gt;
absYb    =3D abs(Yb);&lt;br&gt;
phaseYb =3D angle(Yb);&lt;br&gt;
&lt;br&gt;
[maxabsYb indx] =3D max(absYb)       % [25.1987  75]&lt;br&gt;
a =3D 2*maxabsYb*df                 % 9.8336&lt;br&gt;
b =3D 2*pi*abs(fb(indx))             % 3.0000&lt;br&gt;
&lt;br&gt;
k=3Dk+1,figure(k)&lt;br&gt;
subplot(2,2,1)&lt;br&gt;
plot(fb,ReYb)&lt;br&gt;
subplot(2,2,2)&lt;br&gt;
plot(fb,ImYb)&lt;br&gt;
subplot(2,2,3)&lt;br&gt;
plot(fb,absYb)&lt;br&gt;
subplot(2,2,4)&lt;br&gt;
plot(fb,phaseYb)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Hope this helps,&lt;br&gt;
&lt;br&gt;
Greg</description>
    </item>
  </channel>
</rss>

