seach string in arraycell and find idx

조회 수: 3 (최근 30일)
piero
piero 2023년 9월 18일
답변: David Hill 2023년 9월 18일
C = {'A',31;
'B',5;
'C',3}
C = 3×2 cell array
{'A'} {[31]} {'B'} {[ 5]} {'C'} {[ 3]}
idx = find(ismember(C,{'A'}))
Error using cell/ismember
Input A of class cell and input B of class cell must be cell arrays of character vectors, unless one is a character vector.

채택된 답변

David Hill
David Hill 2023년 9월 18일
C = {'A',31;
'B',5;
'C',3};
idx = find(ismember(C(:,1),{'A'}))
idx = 1

추가 답변 (1개)

Dyuman Joshi
Dyuman Joshi 2023년 9월 18일
When using ismember, if any of the input is a Cell array, it is expected that it will be a cell array of character vectors.
> which is what the error states
> which is mentioned in the documentation as well - Input Arguments for ismember()
But C is not a homogenueous cell array of character vectors, it has numeric data as well. So the above code does not work.
Use (the more robust) strcmp instead -
C = {'A',31;
'B',5;
'C',3}
C = 3×2 cell array
{'A'} {[31]} {'B'} {[ 5]} {'C'} {[ 3]}
%Comparing with cell array of character vector
idx = find(strcmp(C,{'A'}))
idx = 1
%Comparing with character
idx = find(strcmp(C,'A'))
idx = 1
%Comparing with string
idx = find(strcmp(C,"A"))
idx = 1

카테고리

Help CenterFile Exchange에서 Other Formats에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by