How to find data values that falls on line connecting loglog plot in matlab
17 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jeremy
el 23 de En. de 2020
Comentada: Sindar
el 24 de En. de 2020
I tried 'interp1' with 'linear' and 'pchip' to tried to pull more data values out of the line that matlab connected my data points. Neither of them look correct when i go to plot the new data values on a loglog plot.
The problem is obvious when using the example from the Matlab Help for 'loglog'
x = logspace(-1,2);
y = exp(x);
loglog(x,y,'-s');
Then find the interpolation to get more data points in the middle, the line isn't smooth:
xq = logspace(-1,2,500);
yq = interp1(x,y,xq,'linear'); %OR% yq = interp1(x,y,xq,'pchip');
figure; loglog(xq,yq);
I must be missing something easy. Thanks.
0 comentarios
Respuesta aceptada
Star Strider
el 23 de En. de 2020
To get a smooth interpolation, it is necessary to do two transformations on it. First, interpolate log(y), and then take the exponential of the interpolated result:
yq = exp(interp1(x,log(y),xq,'linear'));
2 comentarios
Más respuestas (1)
Sindar
el 23 de En. de 2020
Your interpolation is linear. Compare:
loglog(x,y,'-s',xq,yq,'r*');
and
plot(x,y,'-s',xq,yq,'r*');
Log-log interpolation can be done "by hand":
yq = 10.^interp1(log10(x),log10(y),log10(xq),'linear');
3 comentarios
Sindar
el 24 de En. de 2020
Yes, they are mathematically equivalent. Numerically, I think exp(log(x)) is likely to be slightly closer to x than 10.^(log10(x)) -- I think more work has been put into calculating exp() accurately (and quickly) than 10.^
Ver también
Categorías
Más información sobre Calendar en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!