How to Delete a Row in MATLAB - A Comprehensive Guide for Engineers and Data Scientists

In this article, we will cover the concept of deleting rows from a MATLAB matrix or array. We will provide an in-depth explanation on how this technique can be achieved using different methods such as …

Updated October 29, 2023


Hey! If you love Computer Vision and AI, let's connect on Twitter or LinkedIn. I talk about this stuff all the time!

In this article, we will cover the concept of deleting rows from a MATLAB matrix or array. We will provide an in-depth explanation on how this technique can be achieved using different methods such as indexing, logical operators, and built-in functions offered by MATLAB. Throughout this tutorial, you’ll find valuable code samples to easily grasp the concepts discussed and utilize them in your own programming tasks.

Introduction

MATLAB is a powerful tool for scientific computing, data analysis, and algorithm development. It offers various functionalities that help users process data, visualize results, and perform advanced computations. As an essential component of any data-driven project, MATLAB allows users to manipulate different types of data structures like matrices or arrays.

One crucial task when working with these data structures is modifying their content by deleting rows, columns, or elements from them. This can be done for various reasons such as removing duplicated or unwanted elements or simplifying data preparation. In MATLAB, there are several methods available to delete rows. We’ll explore these techniques and provide sample code snippets to demonstrate their usage effectively.

Deleting Rows Using Indexing

One of the fundamental ways to delete a row from an array in MATLAB is by using indexing. This involves specifying the row numbers you want to remove from the matrix or array, and then creating a new array with those rows eliminated.

Example 1: Deleting a single row

In this example, we have a 3x4 matrix named ‘A’:

A = [1 2 3 5; 7 8 9 10; 11 12 13 14]

Let’s remove the second row (which is the fifth element in a one-based indexing system):

B = A(~(1:end)==5, :);

Here, we’re creating a logical array with all elements except 5th to be false. Then using indexing, we assign these false indices as the row numbers that will be deleted from ‘A’. Finally, ‘B’ is created by copying rows that do not correspond to the removed row into a new matrix.

Example 2: Deleting multiple rows

Sometimes, you may want to remove more than one row from your data array at once. Here’s an example where we delete the second and third rows from ‘A’:

C = A(~((1:end)==5 | (1:end)==6), :);

In this case, the indexing function is using logical expressions to select rows that are neither the fifth nor sixth row. These rows are then used for creating a new matrix ‘C’ with the desired deletions.

Deleting Rows Using Logical Operators and Conditions

Another approach to delete rows from a MATLAB array is by utilizing logical operators and conditions. This method uses boolean expressions to evaluate each element of an array or matrix, allowing you to selectively remove certain rows based on your requirements.

Example 1: Deleting rows with specific values

Suppose you have a 2x3 matrix ‘A’:

A = [2 4 6; 5 8 9]

In this scenario, you may want to delete the row where the elements in each column are not less than 5:

B = A(all(A >= 5), :);

Here, ‘all’ is a built-in function that returns true if all elements of an array are nonzero. The logical expression we use checks if every element in ‘A’ is greater than or equal to 5. Finally, these rows are then used to create a new matrix ‘B’.

Example 2: Deleting rows with specific conditions

In some cases, you may need to delete rows based on more complex logical expressions. Let’s say you want to remove any row from ‘A’ where the maximum value in that row is greater than or equal to 8:

C = A(~max(A, [], 2) >= 8, :);

Here, we create a new matrix ‘C’ by deleting rows for which the maximum value of each row is not less than 8. By using ‘~’, we are inverting the logical result to remove the desired rows instead of retaining them.

Deleting Rows Using Built-in Functions

MATLAB provides a collection of built-in functions that can be used to manipulate data, including deleting rows from arrays or matrices. Let’s explore two of these useful functions: ‘setdiff’ and ‘unique’.

Example 1: Deleting rows with unique values

To delete rows containing unique elements in a matrix, you can use the ‘setdiff’ function to find the distinct values present in a vector:

D = setdiff(A(:), A(:,1));
E = setdiff(A, D);

First, we extract all unique values from each row of ‘A’. Then, by using these unique values as an input, we remove them from ‘A’ to create a new matrix ‘E’ without the unwanted rows.

Example 2: Deleting duplicate rows

To eliminate duplicate rows in your data array, you can leverage the ‘unique’ function combined with indexing. Let’s consider the following 3x4 matrix named ‘A’:

A = [1 2 3 5; 7 8 9 10; 11 12 13 14]

Now, let’s delete all duplicate rows from ‘A’ and reorganize the remaining data into a new matrix:

B = A(unique(A, 'rows'), :);

Here, ‘unique’ is used to identify the distinct rows in the matrix. Afterward, it returns their indices according to the second input argument (which specifies that we want unique rows). Finally, these row numbers are used as indices to create a new array ‘B’, excluding the duplicate rows.

Conclusion

MATLAB offers several approaches for deleting rows from matrices or arrays. In this comprehensive guide, we explored various techniques using indexing, logical operators and conditions, built-in functions, and their applicability in different scenarios. By combining these methods with relevant code samples, you should now have a thorough understanding of how to modify data structures effectively in MATLAB, allowing you to enhance your programming skills and make the most out of this powerful software for scientific computing and data analysis.