How can I update the x axis limit inside a loop?
37 views (last 30 days)
omav = 5*1000*2*pi; % omega average, center
sigma = [0,0.5,1,2,5].*1000*2*pi; % std deviation. A.K.A width
t = 100;
om = linspace(-3*sigma(i), 3*sigma(i),100);
num = -(om-omav).^2;
den = 2.*sigma(i).^2;
gaus = exp(num./den);
figure(i), plot(om, gaus)
title( [' for sigma = ' num2str(sigma(i)/(2000*pi))] )
This is my code, i'm trying to make each figure with new x limits from the value of the variable omm but i get an error says:
" Error using matlab.graphics.axis.Axes/set
While setting the 'XLim' property of 'Axes':
Value must be a 1x2 vector of numeric type in which the second element
is larger than the first and may be Inf "
I thought this because of the zero value of first sigma, therefore i added an if statement that if i>1 , set the x limits, and the error disappeared, but the limits still as they were.
Adam Danz on 27 Jan 2020
On the first iteration, om is all 0s so [om(1) om(end)] returns [0,0] which, as you pointed out, is not allowed when setting axis limits. Here are two ways around that.
Method 1: offset one of the limit values by a very tiny number
Method 2: set a default limit when the limits are equal
xl = [om(1), om(end)];
xl = [0,1];