MATLAB Answers

Logarithmic scale with a different base

55 views (last 30 days)
Ido Gross
Ido Gross on 13 Aug 2020
Answered: Walter Roberson on 13 Aug 2020
Hi,
I am trying to plot a function using logaritmic scale on the x axis, with base 2.
my code is:
N = 1:10000;
M = 61;
L = N-M+1;
ova_complex = ((N.*(log2(N)+1))./(N-M+1));
figure
stem(log2(N),ova_complex)
xlim([6 14])
the graph im getting is good, but i want to show only the integer values on the x axis(i.e. 6,7,8,9)
is there a way to do that?
thanks

  0 Comments

Sign in to comment.

Answers (3)

Star Strider
Star Strider on 13 Aug 2020
Try this:
N = 1:10000;
M = 61;
L = N-M+1;
ova_complex = ((N.*(log2(N)+1))./(N-M+1));
figure
stem(log2(N),ova_complex)
xlim([6 14])
xt = get(gca, 'XTick'); % ADD THIS LINE
xtl = fix(min(xt)):fix(max(xt)); % ADD THIS LINE
set(gca, 'XTick',xtl) % ADD THIS LINE
That should produce integer ticks and integer tick labels.
.

  0 Comments

Sign in to comment.


hosein Javan
hosein Javan on 13 Aug 2020
add the following after plot
ax = gca; % current axe
ax.XTick = 6:14;

  0 Comments

Sign in to comment.


Walter Roberson
Walter Roberson on 13 Aug 2020
log2(x) = log(x) *log(2)
log(2) is a uniform scaling and since plots are scaled to fit available space, becomes irrelevant.
So you get the same shape if you use semilogx. And you can lie with the labels if you want. However if you are using datatips you need your approach (unless you program them to lie)
You can use xticks() to choose integer tick locations.

  0 Comments

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!