find ( strcmp ( many_different_elements )

5 ビュー (過去 30 日間)
Dave
Dave 2021 年 10 月 14 日
編集済み: Stephen 2021 年 10 月 14 日
Hello, I want to check if any of the elements of a cell CC with 90 elements are in column2 of a matrix w 10k rows. If so, to retrieve the row location.
CC below has four elements
CC={'AB1', 'AB2', 'AB3' ,'AB4'}
I would use
idloc = find(strcmp(databig{:,2}, 'AB1') | strcmp(databig{:,2}, 'AB2') | strcmp(databig{:,2}, 'AB3') | strcmp(databig{:,2}, 'AB4') )
But was wondering if there's a nicer way than to write 90 times in the find line
  2 件のコメント
Mitchell Thurston
Mitchell Thurston 2021 年 10 月 14 日
I just noticed the end of the first sentence also wanted the row location. The general idea should still work.

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

回答 (2 件)

Ryan
Ryan 2021 年 10 月 14 日
You could create a for loop that checks each element and then do the find outside the four loop for find the rows. Something like this
CC = {'AB1', 'AB2', 'AB3' ,'AB4'};
for ii = 1:length(CC)
idx(:,ii) = strcmp(databig,CC{ii});
end
[idloc,~] = find(idloc);

Stephen
Stephen 2021 年 10 月 14 日
編集済み: Stephen 2021 年 10 月 14 日
"But was wondering if there's a nicer way than to write 90 times in the find line"
Of course: forget about repeated STRCMP calls (e.g. in a loop), just use one ISMEMBER call:
Read its documentation and pay careful attention to the order of its inputs and outputs.
X = ismember(databig(:,2),CC)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by