Creating logical arrays based on condition

10 Ansichten (letzte 30 Tage)
Tooba
Tooba am 30 Dez. 2018
Beantwortet: Stephen23 am 30 Dez. 2018
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.

Akzeptierte Antwort

madhan ravi
madhan ravi am 30 Dez. 2018
  2 Kommentare
Tooba
Tooba am 30 Dez. 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?
madhan ravi
madhan ravi am 30 Dez. 2018
c(a>b)=.... your desired value

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Stephen23
Stephen23 am 30 Dez. 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

Kategorien

Mehr zu Data Types finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by