Effacer les filtres
Effacer les filtres

Error in script Subscript indices must either be real positive integers or logicals.

1 vue (au cours des 30 derniers jours)
I am trying to calculate the mean, max and min values from an array under some condition and at some specific case i get a very "strange" error
Subscript indices must either be real positive integers or logicals.
Error in MeanHourlyTOC (line 31)
minTOC = min(dummy);
since i am able to calculate the max and mean values and this error is referred just in the min value. My code is as follow
l=0;
for i=1982:2012
for j=1:12
for k=1:24
idx=find(Yr==i&M==j&T==k);
dummy=TOC(idx);
dummy(isnan(dummy))=[];
if ~isempty(dummy)
l=l+1;
mTOC = mean(dummy);
sTOC = std(dummy);
maxTOC = max(dummy);
minTOC = min(dummy);
dy = decyear(i,j,15,k,0,0);
Output.hTOCMonthlyMean(l,:) = [dy i j k mTOC sTOC maxTOC minTOC length(dummy)];
end
end
end
end
and the moment the script terminates the array dummy is
>> dummy
dummy =
368.8352
334.5709
341.9396
I would appreciate any help to resolve this issue

Réponse acceptée

Matt J
Matt J le 7 Nov 2014
Modifié(e) : Matt J le 7 Nov 2014
Put
clear min
just prior to the for-loop. Preferably also, avoid using "min" as the name of one of your variables.

Plus de réponses (1)

Adam
Adam le 7 Nov 2014
Do you have a variable named min further up the code?
The error message is typical of such a scenario where the code thinks that the instruction
minTOC = min(dummy);
is trying to index into a variable called 'min' using whatever is in dummy as indices rather than call the 'min' function.
Variables always take precedence over functions and will hide them if you reuse the name of a function as a variable.
which min
at the appropriate point will tell you whether you have such a variable. If you don't it will point you to where the builtin function is, if you have a variable it will just say:
min is a variable.
  3 commentaires
Adam
Adam le 7 Nov 2014
That is interesting.
clear min
would normally clear a variable called min and thus work in that way. It would also clear any other functions and other detritus in its cache called min, but that is quite surprising that you got such behaviour with no variable called min.
Matt J
Matt J le 7 Nov 2014
I am skeptical that Kostas did not have a variable called 'min'.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by