Finding values from Cubicinterp fit

12 visualizaciones (últimos 30 días)
Jason
Jason el 13 de En. de 2017
Comentada: Jason el 14 de En. de 2017
If I have performed a cubic interp to some data,
x = linspace(1,maxFwhm+1,maxFwhm+1)'
f=fit(x,y,'cubicinterp')
hold on
plot(f,'k--')
coeffvalues(f)
How can I now calculate the x value that corresponds with the y value of 0.5?
Thanks Jason

Respuesta aceptada

Steven Lord
Steven Lord el 13 de En. de 2017
Use fzero to solve f(x) = 0.5. Keep in mind you can evaluate the fit by passing it a value.
load census
populationFit = fit(cdate, pop, 'poly2');
populationIn1925 = populationFit(1925)
You can check that it evaluated the fit correctly.
plot(cdate, pop)
hold on
plot(populationFit)
plot(repmat(1925, 1, 2), ylim)
plot(xlim, repmat(populationIn1925, 1, 2))
plot(1925, populationIn1925, 'o')
  3 comentarios
Steven Lord
Steven Lord el 13 de En. de 2017
You need to make sure you evaluate the fit for a specific value that fzero will pass into your function.
fun = @(x) f(x)-0.5;
Jason
Jason el 13 de En. de 2017
Thankyou

Iniciar sesión para comentar.

Más respuestas (1)

John D'Errico
John D'Errico el 13 de En. de 2017
Editada: John D'Errico el 13 de En. de 2017
Download my SLM Toolbox . Since I don't have your data, I'll make some up. Not a very creative function, I know, but it will suffice.
Here, for which values of x does the function equal 0.5?
x = (0:5)';
y = rand(size(x));
y = rand(size(x))
y =
0.79221
0.95949
0.65574
0.035712
0.84913
0.93399
f=fit(x,y,'cubicinterp');
slmsolve(f.p,0.5)
ans =
2.1967 3.671
The results are as good as can be had (using the function roots), not an approximation.

Categorías

Más información sobre Time Series en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by