MATLAB: Getting error when asking from max and min for negative values.

maxminnegative vector

I have two vector of negative numbers (log values). The first is fine as it has a postive max value and a negative min. But i get an error for the second vector (which has its max and min as negative numbers) when i ask for max or min. What is another option to get these two values??
error: Subscript indices must either be real positive integers or logicals.

Best Answer

Sounds like you may be trying to index into the array using the min or max value instead of the index:
mn = min(data);
minValue = data(mn);
Don't do that. Use both values if you want to get the index. A better way:
[minValue, indexOfMin] = min(data);
[maxValue, indexOfMax] = max(data);
Or you may have used min for the variable
min = min(data); % Horrible idea
in which case when you came along and tried to do it again, it would have used your min array (a vector is data was a 2-D array) as indexes into your newly created min array. min() is no longer the min function if you replaced it with a variable of the same name. So if the min was now an array of column mins because you stored the mins in an array called min, then doing min(data) will throw that error if any elements of data have negative, zero, or floating points (fractional) values.