Find Array Elements That Meet a Condition - MATLAB & Simulink (2024)

Open Live Script

This example shows how to filter the elements of an array by applying conditions to the array. For instance, you can examine the even elements in a matrix, find the location of all 0s in a multidimensional array, or replace NaN values in data. You can perform these tasks using a combination of the relational and logical operators. The relational operators (>, <, >=, <=, ==, ~=) impose conditions on the array, and you can apply multiple conditions by connecting them with the logical operators and, or, and not, respectively denoted by the symbols &, |, and ~.

Apply a Single Condition

To apply a single condition, start by creating a 5-by-5 matrix that contains random integers between 1 and 15. Reset the random number generator to the default state for reproducibility.

rng defaultA = randi(15,5)
A = 5×5 13 2 3 3 10 14 5 15 7 1 2 9 15 14 13 14 15 8 12 15 10 15 13 15 11

Use the relational less than operator, <, to determine which elements of A are less than 9. Store the result in B.

B = A < 9
B = 5x5 logical array 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0

The result is a logical matrix. Each value in B represents a logical 1 (true) or logical 0 (false) state to indicate whether the corresponding element of A fulfills the condition A < 9. For example, A(1,1) is 13, so B(1,1) is logical 0 (false). However, A(1,2) is 2, so B(1,2) is logical 1 (true).

Although B contains information about which elements in A are less than 9, it doesn’t tell you what their values are. Rather than comparing the two matrices element by element, you can use B to index into A.

ans = 8×1 2 2 5 3 8 3 7 1

The result is a column vector of the elements in A that are less than 9. Since B is a logical matrix, this operation is called logical indexing. In this case, the logical array being used as an index is the same size as the other array, but this is not a requirement. For more information, see Array Indexing.

Some problems require information about the locations of the array elements that meet a condition rather than their actual values. In this example, you can use the find function to locate all of the elements in A less than 9.

I = find(A < 9)
I = 8×1 3 6 7 11 14 16 17 22

The result is a column vector of linear indices. Each index describes the location of an element in A that is less than 9, so in practice A(I) returns the same result as A(B). The difference is that A(B) uses logical indexing, whereas A(I) uses linear indexing.

Apply Multiple Conditions

You can use the logical and, or, and not operators to apply any number of conditions to an array; the number of conditions is not limited to one or two.

First, use the logical and operator, denoted &, to specify two conditions: the elements must be less than 9 and greater than 2. Specify the conditions as a logical index to view the elements that satisfy both conditions.

A(A<9 & A>2)
ans = 5×1 5 3 8 3 7

The result is a list of the elements in A that satisfy both conditions. Be sure to specify each condition with a separate statement connected by a logical operator. For example, you cannot specify the conditions above by A(2<A<9), since it evaluates to A(2<A | A<9).

Next, find the elements in A that are less than 9 and even numbered.

A(A<9 & ~mod(A,2))
ans = 3×1 2 2 8

The result is a list of all even elements in A that are less than 9. The use of the logical NOT operator, ~, converts the matrix mod(A,2) into a logical matrix, with a value of logical 1 (true) located where an element is evenly divisible by 2.

Finally, find the elements in A that are less than 9 and even numbered and not equal to 2.

A(A<9 & ~mod(A,2) & A~=2)
ans = 8

The result, 8, is even, less than 9, and not equal to 2. It is the only element in A that satisfies all three conditions.

Use the find function to get the index of the element equal to 8 that satisfies the conditions.

find(A<9 & ~mod(A,2) & A~=2)
ans = 14

The result indicates that A(14) = 8.

Replace Values That Meet a Condition

Sometimes it is useful to simultaneously change the values of several existing array elements. Use logical indexing with a simple assignment statement to replace the values in an array that meet a condition.

Replace all values in A that are greater than 10 with the number 10.

A(A>10) = 10
A = 5×5 10 2 3 3 10 10 5 10 7 1 2 9 10 10 10 10 10 8 10 10 10 10 10 10 10

Next, replace all values in A that are not equal to 10 with a NaN value.

A(A~=10) = NaN
A = 5×5 10 NaN NaN NaN 10 10 NaN 10 NaN NaN NaN NaN 10 10 10 10 10 NaN 10 10 10 10 10 10 10

Lastly, replace all of the NaN values in A with zeros and apply the logical NOT operator, ~A.

A(isnan(A)) = 0;C = ~A
C = 5x5 logical array 0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0

The resulting matrix has values of logical 1 (true) in place of the NaN values, and logical 0 (false) in place of the 10s. The logical NOT operation, ~A, converts the numeric array into a logical array such that A&C returns a matrix of logical 0 (false) values and A|C returns a matrix of logical 1 (true) values.

See Also

nan | Short-Circuit AND | Short-Circuit OR | isnan | find | and | or | xor | not

Find Array Elements That Meet a Condition
- MATLAB & Simulink (2024)
Top Articles
Geoff Cooper, engineer who helped to make Britain’s aircraft carriers world-class fighting machines – obituary
The Seattle Restaurant World Is Mourning Acclaimed Chef Tamara Murphy
Steve Bannon Issues Warning To Donald Trump
Jps Occupational Health Clinic
'That's Hilarious': Ahsoka's Ezra Bridger Actor Reveals Surprising True-To-Life Detail Behind Sabine Reunion Scene
Jeff Bezos Lpsg
Comenity Pay Ns Web Payment
Gasbuddy Costco Hawthorne
Congdon Heart And Vascular Center
Understanding Pickleball Court Dimensions: Essential Guide
Dr Paul Memorial Medical Center
The Land Book 9 Release Date 2023
Craigslist.com Seattle Wa
Espn Major League Baseball Standings
Practice Assist.conduit.optum
5Ive Brother Cause Of Death
Lucifer Season 1 Download In Telegram In Tamil
Craigslist Westchester Cars For Sale By Owner
Hotleak.vip
My Big Fat Greek Wedding 3 Showtimes Near Regal Ukiah
Her Triplet Alphas Chapter 22
Publix Store 1304
Smile 2022 Showtimes Near Savoy 16
Rubmaps Springfield
Truist Drive Through Hours
Proctor Motors In Lampasas
craigslist: northern MI jobs, apartments, for sale, services, community, and events
Starlight River Multiplayer
Toernooien, drives en clubcompetities
Ktbs Payroll Login
Myanswers Com Abc Resources
Craigslist St. Paul
No Cable Schedule
Crimson Draughts.
Best Upscale Restaurants In Denver
Culvers Flavor Of The Day Freeport Il
FedEx in meiner Nähe - Wien
Directions To Truist Bank Near Me
Seller Feedback
Swissport Timecard
Wie blocke ich einen Bot aus Boardman/USA - sellerforum.de
Ces 2023 Badge Pickup
Texas State Academic Probation
Blow Dry Bar Boynton Beach
Sparkle Nails Phillipsburg
Drew Gulliver Bj
Dungeon Family Strain Leafly
Criagslist Orlando
Ups Carrier Locations Near Me
What Time Does Walmart Auto Center Open
Redbox Walmart Near Me
The Ultimate Guide to Newquay Surf - Surf Atlas
Latest Posts
Article information

Author: Mr. See Jast

Last Updated:

Views: 5535

Rating: 4.4 / 5 (75 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Mr. See Jast

Birthday: 1999-07-30

Address: 8409 Megan Mountain, New Mathew, MT 44997-8193

Phone: +5023589614038

Job: Chief Executive

Hobby: Leather crafting, Flag Football, Candle making, Flying, Poi, Gunsmithing, Swimming

Introduction: My name is Mr. See Jast, I am a open, jolly, gorgeous, courageous, inexpensive, friendly, homely person who loves writing and wants to share my knowledge and understanding with you.