The find() Function in MATLAB

Ammar Ali Feb 14, 2024
  1. Syntax of the MATLAB find() Function
  2. Use the find() Function in a Vector in MATLAB
  3. Use the find() Function in a Matrix in MATLAB
  4. Conclusion
The find() Function in MATLAB

MATLAB, a powerful numerical computing environment, offers a plethora of functions to manipulate, analyze, and visualize data. Among these functions, the find() function stands out as a versatile tool for locating the indices of non-zero elements within arrays and matrices.

In this article, we’ll explore the functionality, syntax, and various applications of the find() function, showcasing its significance in MATLAB programming.

Syntax of the MATLAB find() Function

The find() function in MATLAB is used to locate the indices of non-zero elements in an array or matrix. It is a versatile function that can be applied to vectors, matrices, and multidimensional arrays.

The syntax of the find() function is flexible, accommodating different scenarios:

indices = find(X)
indices = find(X, k)
indices = find(X, k, 'first')
indices = find(X, k, 'last')
[i, j] = find(X)

Parameters:

  • X: The input array or matrix.
  • k: Optional parameter specifying the number of indices to find.
  • 'first' or 'last': Optional parameter indicating whether to return the first or last k indices.

For vectors, a column vector indices is returned, containing the indices of non-zero elements. For matrices, two vectors, i and j, can be returned, representing row and column indices, respectively.

Use the find() Function in a Vector in MATLAB

Let’s delve into various use cases with detailed code examples to harness the full potential of this function.

Example 1: Finding Non-Zero Elements in a Vector

Let’s begin with a basic example. Suppose we have a vector vector:

vector = [1, 2, 0, 4, 0, 6];
indices = find(vector);
indices

In this example, we have a vector [1, 2, 0, 4, 0, 6]. The find() function is applied to identify the indices of non-zero elements, which are then displayed.

The function efficiently filters out zeros, and the resulting indices vector contains the positions of non-zero elements.

Output:

Finding Non-Zero Elements in a Vector

Example 2: Finding the Indices of Specific Values in a Vector

Now, let’s consider a scenario where we want to find the indices of a specific value within a vector.

vector = [1, 2, 0, 4, 0, 6];
index = find(vector == 4);
index

In this example, the vector [1, 2, 0, 4, 0, 6] is given. Using the find() function with the condition vector == 4, we locate the index of the value 4 within the vector.

Output:

Finding the Indices of Specific Values in a Vector

Example 3: Finding the Elements Meeting a Condition

The find() function can also be employed to locate indices based on specific conditions. Consider the following example where we want to find the indices of elements greater than a certain threshold:

vector = [1, 2, 5, 6, 8, 12, 16];
index = find(vector < 10 & vector > 5)

Here, the vector [1, 2, 5, 6, 8, 12, 16] is used. The find() function, with the condition vector < 10 & vector > 5, locates indices of elements greater than 5 and less than 10 in the vector.

Output:

Finding the Elements Meeting a Condition

Example 4: Finding the Indices Using Logical Conditions

Logical conditions can be integrated into the find() function for more complex scenarios. Let’s find the indices of elements meeting multiple conditions:

logical_vector = [true, false, true, true, false];
indices = find(logical_vector)

In this example, a logical vector [true, false, true, true, false] is used. The find() function locates the indices where the logical condition is true, resulting in a vector of indices.

Output:

Finding the Indices Using Logical Conditions

Example 5: Finding the Indices of Minimum or Maximum Values in a Vector

The min() and max() functions, combined with find(), can help identify the indices of minimum or maximum values in a vector. For instance:

vector = [3, 1, 4, 1, 5, 9, 2, 6];
[~, minIndex] = min(vector);
[~, maxIndex] = max(vector);
minIndex
maxIndex

Here, a vector [3, 1, 4, 1, 5, 9, 2, 6] is given. The min() and max() functions are combined with the find() function to locate the indices of the minimum and maximum values.

Output:

Finding the Indices of Minimum or Maximum

Example 6: Finding the Indices Within a Range

The find() function can also be used to locate indices of elements within a specified range. Consider the following example:

vector = [1, 2, 5, 6, 8, 12, 16];
index = find(vector >= 5 & vector <= 10)

In this example, a vector [1, 2, 5, 6, 8, 12, 16] is considered. The find() function is used to locate the indices of elements within the range of 5 to 10.

Output:

Finding the Indices Within a Range

These examples showcase the diverse applications of the find() function in MATLAB, allowing for precise indexing based on various conditions and criteria within vectors.

Use the find() Function in a Matrix in MATLAB

The find() function is not limited to vectors; it can also be applied to matrices. Let’s take a look at different scenarios:

Example 1: Finding the Indices Along Specific Dimensions

In this example, we’ll find the indices along specific dimensions using the 'first' and 'last' options:

matrix = [1, 2, 5; 8, 12, 16];
indices = find(matrix, 2, 'first')

In this example, a 2x3 matrix [1, 2, 5; 8, 12, 16] is considered. The find() function, with the optional arguments 2 and 'first', returns the first two indices along the columns where non-zero elements are found.

Output:

Finding the Indices Along Specific Dimensions

Example 2: Finding the Indices Using Multiple Conditions

Extending our understanding of multiple conditions, let’s find the indices in a matrix based on more intricate criteria:

matrix = [1, 2, 5; 8, 12, 16];
[row, col] = find(matrix < 10 & matrix > 5);
row, col

Here, a 2x3 matrix [1, 2, 5; 8, 12, 16] is used. The find() function is applied with the conditions matrix < 10 & matrix > 5 to locate the indices where values are simultaneously greater than 5 and less than 10.

Output:

Finding the Indices Using Multiple Conditions

Example 3: Finding Row and Column Numbers of a Value in a Matrix

When dealing with matrices, it’s often useful to find both the row and column numbers of a specific value. The find() function can facilitate this:

matrix = [1, 2, 5; 8, 12, 16];
[row, col] = find(matrix == 12);
row, col

Consider a 2x3 matrix [1, 2, 5; 8, 12, 16]. Using the find() function with the condition matrix == 8, we identify the row and column numbers where the value 8 is located.

Output:

Finding Row and Column Numbers of a Value in a Matrix

Example 4: Finding a Single Index of a Value in a Matrix

If you’re interested in finding only a single index of a specific value within a matrix, consider the following:

matrix = [1, 2, 5; 8, 12, 16];
index = find(matrix == 8)

In this instance, a 2x3 matrix [1, 2, 5; 8, 12, 16] is used. The find() function locates the single index where the value 8 is present in the matrix.

Output:

Finding a Single Index of a Value in a Matrix

Example 5: Defining Conditions for a Matrix

You can also define conditions for matrices within the find() function. For instance, finding the row and column numbers of values less than 10 in a matrix:

matrix = [1, 2, 5; 8, 12, 16];
[row, col] = find(matrix < 10);
row, col

In this example, a 2x3 matrix [1, 2, 5; 8, 12, 16] is used. The find() function, with the condition matrix < 10, returns the indices of elements in the matrix that are less than 10.

Output:

Defining Conditions for a Matrix

Example 6: Finding the First N Occurrences of a Value in a Matrix

Suppose you want to find the first N occurrences of a specific value in a matrix. You can achieve this by using the 'first' option with the find() function:

MyMatrix = [1 2 5; 8 12 16; 4 6 9; 8 12 16];
[row, col] = find(MyMatrix == 8, 2, 'first');
row, col

Consider a 4x3 matrix [1 2 5; 8 12 16; 4 6 9; 8 12 16]. Using the find() function with the optional arguments 2 and 'first', we retrieve the first two occurrences of the non-zero element 8 within the matrix.

Output:

Finding the First N Occurrences of a Value

These advanced examples show the versatility of the find() function in MATLAB, providing sophisticated solutions for indexing elements within matrices based on specific conditions and criteria.

Conclusion

The find() function in MATLAB emerges as a powerful and flexible tool for locating indices of non-zero elements within arrays and matrices. Its versatility, coupled with the ability to customize the number of indices and choose between the first and last occurrences, makes it an invaluable asset in various applications.

Whether you are working with vectors, matrices, or multidimensional arrays, the find() function is a key player in MATLAB programming, contributing to efficient and concise code. Understanding and mastering this function opens up new possibilities for data analysis, manipulation, and visualization in the MATLAB environment.

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Related Article - MATLAB Matrix