Error when trying to remove rows with specific values from cell array.

2 ビュー (過去 30 日間)
Aleya Marzuki
Aleya Marzuki 2020 年 11 月 7 日
コメント済み: Star Strider 2020 年 11 月 7 日
I have a cell array that looks like this with strings and numbers
I'm trying to write simple code that will remove entire rows in the array if numbers 1-20 are present in column 1:
toremove = [1:20];
event_time(ismember(event_time(:,1),toremove)) = [];
However I receive this error when I run my code
Error using cell/ismember
Input A of class cell and input B of class double must be cell arrays of character vectors, unless one is a character vector.
How would I index event_time by the numbers in column 1? They are not strings/characters so strcmp does not work, and treating them as integers, as above does not work either. Many thanks!

採用された回答

Star Strider
Star Strider 2020 年 11 月 7 日
Try this:
CA = num2cell(randi(50, 25, 5)); % Create Cell Array
idx = cellfun(@(x)ismember(x, 1:20), CA(:,1)); % Logical Vector Selecting (1:20) In Column #1
CAedited = CA(~idx,:); % Eliminat Rows Meeting Criteria
Use your own cell array for ‘CA’.
  6 件のコメント
Aleya Marzuki
Aleya Marzuki 2020 年 11 月 7 日
編集済み: Aleya Marzuki 2020 年 11 月 7 日
Many thanks! I tweaked your code a bit so that idx takes into account the first row in event_time which contains 'trial'. Without taking this into account, the idx file is too short (with one row less than the number of rows of the original file)
idx = cellfun(@(x)ismember(x, 1:20), event_time(1:end,1), 'Uni',0); % Idx outputs 1 if 1-20 is in Column #1 and 0 otherwise
idx(1,:)= {[0]}; % need to convert first row of index to 0 because the string 'trial' shows [0,0,0,0,0], which will make the index fail to work
event_time = event_time(~[idx{:}],:); % remove any rows where idx = 1
Star Strider
Star Strider 2020 年 11 月 7 日
As always, my pleasure!

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

その他の回答 (0 件)

カテゴリ

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