Generate new array with logarithmic spacing
21 views (last 30 days)
Show older comments
I have some experimental data (ydata and xdata), where xdata is an array with linear spacing. I would like to know how I can get my ydata in such a way that the elements are spaced as if xdata was on a logarithmic space.
In other words, I would like to have a new ydata vector (new_ydata) such that when I plot:
plot(new_ydata)
it would generate the same graph as when I plot:
semilogx(ydata)
Thanks
0 Comments
Accepted Answer
Michael Haderlein
on 7 Apr 2015
I'm not sure what you want. You can get a logspaced array like this: Assume that x is your xdata and you want the log array to have 20 values:
xlog=logspace(log10(min(x)), log10(max(x)), 20)
ylog=interp1(x,y,xlog);
However, plot(xlog,ylog) will still look like plot(x,y), just the position of the markers differs. If you want to have the same optical output, you need to plot(log(x),y), but of course that will change the values on the axes (to the log values, obviously).
More Answers (0)
See Also
Categories
Find more on Line Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!