Creating logical arrays based on condition

27 views (last 30 days)
I have an output array a[0.5,0.7,0.9], a threshold array b[0.3, 0.8, 0.7], and a lookup values array c[0,1,2]
I want a finalOutput array, f, which contains the corresponding values c if a>b else -1.
I decided to use a logical indexing array using the following code for this:
a(a>b)=1;
a(a<=b)=0;
a=logical(a);
f=c(a);
But f only contains the values of c where a=1. How can I write conditional statements to get f=[0,-1,2] ?
I also want to get the logical a in one line, because the second line of code gives incorrect outputs if I change a to [1.5, 0.7, 0.9] and b to [1.3, 0.8, 0.7].
Appreciate all suggestions.

Accepted Answer

madhan ravi
madhan ravi on 30 Dec 2018
c(a<b)=-1
f=c
  2 Comments
Tooba
Tooba on 30 Dec 2018
c(a<b)=-1 will only replace the values of a which are less than b. What about the values of a which are greater than b?

Sign in to comment.

More Answers (1)

Stephen23
Stephen23 on 30 Dec 2018
>> a = [0.5,0.7,0.9];
>> b = [0.3,0.8,0.7];
>> c = [0,1,2];
>> f = c;
>> f(a<=b) = -1
f =
0 -1 2

Categories

Find more on Data Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!