MATLAB Answers

Error to applying ismember for cell arrays

조회 수: 4(최근 30일)
I really thanks in advance any help. I am trying to use the below command to find any variable from the A member of the B, but encountering with the error. Welcome any suggestion.
[~,JINDX] = cellfun(@(x)(ismember(B,x)),A,'Uni',false);
Error using cell/ismember (line 34)
Input A of class cell and input B of class char must be cell arrays of strings, unless one is a string.
Error in @(x)(ismember(B,x))
34 error(message('MATLAB:ISMEMBER:InputClass',class(a),class(b)));

  댓글 수: 1

Stephen Cobeldick
Stephen Cobeldick 18 Feb 2020
It is not clear what you expect. Cell array A contains Rx1 character arrays,e.g.:
>> A{1}
ans =
6
9
0
0
8
0
5
while cell array B contains scalar numerics (which would be much better store in once numeric array):
>> B{1}
ans = 6900805
Do you expect that Rx1 character vector to be equivalent to that numeric scalar? For example:
>> Anum = str2double(cellfun(@(v)v(:).',A,'uni',0));
>> Bnum = [B{:}];
>> idx = ismember(Bnum,Anum)
idx =
1 0 0 0 0 0 0 0 0 0

로그인 to comment.

채택된 답변

KSSV
KSSV 18 Feb 2020
load("example.mat") ;
N = length(A) ;
A1 =zeros(N,1) ;
for i = 1:N
A1(i) = str2num(A{i}') ;
end
B1 = cell2mat(B)' ;
[c,ia] = ismemebr(A1,B1) ;

  댓글 수: 6

표시 이전 댓글 수: 3
Farshid Daryabor
Farshid Daryabor 18 Feb 2020
Dear KSSV,
the problem is when I want to use ia as index to find the corresponding variable,
>> C = D(ia);
Subscript indices must either be real positive integers or logicals.
KSSV
KSSV 18 Feb 2020
Show us the whole code...in the give answer
A1(c)
works fine.
Farshid Daryabor
Farshid Daryabor 18 Feb 2020
great, it's work to me also. Thanks

로그인 to comment.

추가 답변(0개)

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by