How to properly delete cell element ?

I have a 1x12 cell. How do i remove the last element in the cell ? I tried cell{end} = [] but it did not work. It only emptied the last cell. I would like the result to be a 1x11 cell

 Réponse acceptée

goerk
goerk le 27 Juin 2016

23 votes

use normal brackets
cell(end) = [];

1 commentaire

Guillaume
Guillaume le 27 Juin 2016
The reason being:
  • curly brackets act on the content of a cell(s). It does not affect the container (the cell array) itself, so c{end} refers to what's in the last cell, and therefore c{end} = [] puts an empty matrix in that last cell.
  • round brackets act on the cell array itself. So c(end) refers to the last cell, and c(end) = [] deletes it.

Connectez-vous pour commenter.

Plus de réponses (3)

Ceethal Kottakali Piyus
Ceethal Kottakali Piyus le 20 Jan 2022

2 votes

You have to use round parentheses instead of curly braces (which act on the inner cell values and not on the cells themselves):
cell(end) = [];

1 commentaire

Tong Zhao
Tong Zhao le 15 Juin 2022
Modifié(e) : Tong Zhao le 15 Juin 2022
Hi Ceethal,
What if I want to remove the second row of a 2x2 cell array?
cell_arr = {1,2;3,4}
cell_arr = 2×2 cell array
{[1]} {[2]} {[3]} {[4]}
cell_arr(2,:) = []
cell_arr = 1×2 cell array
{[1]} {[2]}
Edit: I just found the expression myself. But I'd like to keep this thread for anyone who's running into the same problem.

Connectez-vous pour commenter.

Amir Hosein Asaadi
Amir Hosein Asaadi le 27 Sep 2021
I sove it by creating variable again like this:
cell_var = {'var1','var2'};
cell_var = {'var1'};
I hope this work for you.
Josep Llobet
Josep Llobet le 2 Août 2022
% Cell you want to copy
branques_pixels_new = {[55178] [55593] [62271] [62686] [66858] [67273 123123 12123]}
% element you want to eliminate
n_elm_borrar = 3;
% New cell with the non- element
branques_pixels_new_2 = {};
% Operation
for n_elm = 1:length(branques_pixels_new)
if n_elm ~= n_elm_borrar
branques_pixels_new_2{end+1} = branques_pixels_new{n_elm};
end
end
% New cell
branques_pixels_new_2

2 commentaires

The simple and efficient MATLAB approach:
branques_pixels_new_2 = branques_pixels_new;
branques_pixels_new_2(n_elm_borrar) = [];
Josep Llobet
Josep Llobet le 3 Août 2022
That's true, it's better that one

Connectez-vous pour commenter.

Catégories

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by