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

 採用された回答

goerk
goerk 2016 年 6 月 27 日

23 投票

use normal brackets
cell(end) = [];

1 件のコメント

Guillaume
Guillaume 2016 年 6 月 27 日
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.

サインインしてコメントする。

その他の回答 (3 件)

Ceethal Kottakali Piyus
Ceethal Kottakali Piyus 2022 年 1 月 20 日

2 投票

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 件のコメント

Tong Zhao
Tong Zhao 2022 年 6 月 15 日
編集済み: Tong Zhao 2022 年 6 月 15 日
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.

サインインしてコメントする。

Amir Hosein Asaadi
Amir Hosein Asaadi 2021 年 9 月 27 日

0 投票

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 2022 年 8 月 2 日

0 投票

% 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 件のコメント

Stephen23
Stephen23 2022 年 8 月 2 日
The simple and efficient MATLAB approach:
branques_pixels_new_2 = branques_pixels_new;
branques_pixels_new_2(n_elm_borrar) = [];
Josep Llobet
Josep Llobet 2022 年 8 月 3 日
That's true, it's better that one

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeEntering Commands についてさらに検索

タグ

質問済み:

2016 年 6 月 27 日

コメント済み:

2022 年 8 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by