MATLAB: Defining the limits for discrete time sequence on x axis using stem command

MATLABstem discrete time sequence plot

In this sample program, I need to define the x axis as integers only rather than fractions.
x=[-2 1 -1 2]
nx=-1:2
h=[0 1 2]
nh=0:2
subplot(311)
stem(nx,x,'k')
xlabel('n')
ylabel('x(n)')
title('Input sequence x(n)')
subplot(312)
stem(nh,h,'k')
xlabel('n')
ylabel('h(n)')
title('Impulse Response h(n)')

Best Answer

Add these lines to each subplot:
xt = get(gca, 'XTick');
set(gca, 'XTick',min(xt):max(xt))
so the revised code is now:
x=[-2 1 -1 2]
nx=-1:2
h=[0 1 2]
nh=0:2
subplot(311)
stem(nx,x,'k')
xt = get(gca, 'XTick');
set(gca, 'XTick',min(xt):max(xt))
xlabel('n')
ylabel('x(n)')
title('Input sequence x(n)')
subplot(312)
stem(nh,h,'k')
xt = get(gca, 'XTick');
set(gca, 'XTick',min(xt):max(xt))
xlabel('n')
ylabel('h(n)')
title('Impulse Response h(n)')
Note that here, the minimum and maximum x-tick values are integers. If they are not in other plots, you will have to change the added lines appropriately to make them integer values, for example:
set(gca, 'XTick',floor(min(xt)):ceil(max(xt)))
Experiment to get the result you want.