フィルターのクリア

delete row from cell array under specific conditions

1 回表示 (過去 30 日間)
Luca Zinicola
Luca Zinicola 2018 年 3 月 10 日
コメント済み: Von Duesenberg 2018 年 3 月 10 日
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 日
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)...

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

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by