delete row from cell array under specific conditions

Hi, sorry for the question, but I'm new at programming in Matlab.
I have a Cell Array, let's say CellArray, and I want to delete the rows where (the element in the first column is equal to a specified number) and (the element in the third column is equal to a string, for istance 'up') how do I do it? I think with cellfun I should be able to do it in only one line of code, but I don't know how.

回答 (1 件)

Von Duesenberg
Von Duesenberg 2018 年 3 月 10 日

0 投票

Here's a quick made up example (if you can convert your cell to a table with cell2table); of course, it would have been easier if you had provided your actual data:
newT = table([1; 2; 3], {'is'; 'is'; 'is'}, {'up'; 'up'; 'down'})
newT(~strcmp('1', newT.Var1) & ~strcmp('up', newT.Var3),:)

2 件のコメント

Luca Zinicola
Luca Zinicola 2018 年 3 月 10 日
編集済み: Luca Zinicola 2018 年 3 月 10 日
yes, sorry, I know it'd be easier, but I can't show it since it's part of my research. Let's say I have this:
myCell = { 1, 'up', 15; 18, 'down', 20; 3, 'up', 15; 15, 'down', 100; 18, 'up', 17; 18, 'up', 120}
and I want to delete the rows where the first element is 18 and the second 'up', that is in this example the latter and the one before. Given the mixed structure, I adopted the Cell Array structure, and I cannot change it. I thought I should do something like:
idx = find(ismember ( cell2mat( myCell( : , 1)), 18));
idx2 = strcmp(myCell(:,2) , 'up');
condicio = intersect(idx, idx2);
myCell(condicio, :) = [];
So, is it right, or should I do something different? As I said, I must operate on Cell Array, I cannot change the structure because I can't change all the other lines of code because of this, and also because it's the most convenient structure for my data
Von Duesenberg
Von Duesenberg 2018 年 3 月 10 日
I'm pretty sure somebody will come up with the right solution, but you can always use mine: convert your cell to table, delete the relevant rows, and convert the table back to cell (with table2cell)...

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

カテゴリ

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

製品

タグ

質問済み:

2018 年 3 月 10 日

コメント済み:

2018 年 3 月 10 日

Community Treasure Hunt

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

Start Hunting!

Translated by