How to find first instance of a value in array?
898 views (last 30 days)
Hi, I am writing a code that as follows:
arr(p)=abs(c); %absolute value of c
cor(t)=arr(p); %correlation for c>.95 && c<1
maximum=max(cor); %maximum value of cor(t)
Now, I am trying to find the first instance the value of maximum comes in the "arr" Array.
I have tried the following:
if(u==1) %making sure only the first max value is taken
q=value(v); %q is becoming always 0.5,have to fix it
x = find(maximum == arr,'first') ;
In the 1st and 2nd try, when I use fprintf to detect the x, it prints blank, such as,
"x is "
In the 3rd try the following error occurs,
Second argument must be a positive scalar integer.
How can I fix it?
Steven Lord on 4 Jul 2021
You could use logical indexing.
c = randn(1, 10)
arr = abs(c)
% Overwrite those values in arr that are out of bounds with NaN. I'm using
% wider bounds to show the technique with a small data set.
arr(arr > 1.5) = NaN
arr(arr < 0.5) = NaN
[value, location] = max(arr, , 'omitnan')
If all you're interested in is the value and not its location in c you could delete the elements of arr that fall out of bounds.
arr2 = abs(c);
arr2(arr2 > 1.5) = ;
arr2(arr2 < 0.5) = 
[value2, location2] = max(arr2)
location2 is not the same as location because arr2 does not have the same number of elements as either arr or c.