Suppose we need to generate points equally spaced in logarithmic space. This is often useful with semilogx, semilogy, or loglog plots and can be easily accomplished by the logspace command. Let's generate 10 values between 1 and 1000 equally spaced in the log-space:
>> Dlogspace = logspace(log10(1),log10(1000),10)
0.0010 0.0022 0.0046 0.0100 0.0215 0.0464 0.1000 0.2154 0.4642 1.0000
That's great. But sometimes, the D variable must be integer. Well, OK, let's round the values.
>> Drounded = round(Dlogspace)
1 2 5 10 22 46 100 215 464 1000
Again, this is easy. But the values are not easy to remember, since they are different in each decade.
And this is the moment where space125 comes in. It generates values of 1, 2, and 5 multiplied by powers of 10:
>> D = space125(1,1000)
1 2 5 10 20 50 100 200 500 1000
>> D = space125(1,789)
>> D = space125(0.0235, 5.7)
Pros and cons of space125:
The function |space125| generates 3 easy-to-remember integer points in each decade of the scale. You cannot change it (that's the minus), but very often you needn't change it (that's the plus). The values 1, 2, and 5 are based on my personal experience and are sufficient for the majority of my needs.
If the domain should be covered with higher density, I suggest using the
>> round( logspace(log10(xmin),log10(xmax),nPoints) )
Of course, if there is no need for integer values, use the original MATLAB logspace command.
Petr Posik (2020). space125: Almost equally spaced points in logarithmic space (https://www.mathworks.com/matlabcentral/fileexchange/26503-space125-almost-equally-spaced-points-in-logarithmic-space), MATLAB Central File Exchange. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!