MATLAB: Generate new array with logarithmic spacing

logarithmic spacingsemilogx

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

Best Answer

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).