seach string in arraycell and find idx

조회 수: 2 (최근 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에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by