if statement between cells arrays
조회 수: 1 (최근 30일)
이전 댓글 표시
I need to compare between values in cells arrays such as I have :
p =
'GO:0008150'
'GO:0016740'
'GO:0016787'
'GO:0008150'
'GO:0016740'
'GO:0016740'
'GO:0016787'
'GO:0016787'
'GO:0016787'
'GO:0006810'
'GO:0006412'
'GO:0004672'
'GO:0008150'
'GO:0008150'
'GO:0006810'
'GO:0016192'
'GO:0006810'
'GO:0005215'
and c:
c =
'GO:0016740'
'GO:0016787'
'GO:0006810'
'GO:0006412'
'GO:0004672'
'GO:0016779'
'GO:0004386'
'GO:0003774'
'GO:0016298'
'GO:0016192'
'GO:0005215'
'GO:0030533'
'GO:0016787'
'GO:0006810'
'GO:0006412'
'GO:0003774'
'GO:0005215'
'GO:0030533'
so I want to make if statement that: I want elements from vector 'p' not occure in vector 'c' . the code I made is:
for i=1:length(p)
if p(i)~=c(:)
level1_root=p{i}
break
else
%disp('There is no root node in the system!!')
end
end
and the error message is: ??? Undefined function or method 'ne' for input arguments of type 'cell'
it is worked for normal vector , but not worked for cells array (my case)
advice please
댓글 수: 0
채택된 답변
Azzi Abdelmalek
2012년 10월 25일
편집: Azzi Abdelmalek
2012년 10월 25일
out=unique(p(cellfun(@(x) ~ismember(x,c),p)))
추가 답변 (2개)
Matt Fig
2012년 10월 25일
편집: Matt Fig
2012년 10월 25일
This will fix your code:
for i=1:length(p)
if p{i}~=c{i}
level1_root=p{i}
break
else
%disp('There is no root node in the system!!')
end
end
But I am confused. You say that you want to make sure that the values in p are not in c. Yet this code only checks that the values aren't in the same position, not that they don't exist at all. Have a look at:
ismember(p,c) % 1s show where an element of p is in c...
So which is it? Do you want to make sure that no element of p is in c (as you say), or that no element of p is in the same position as it is in c (what your code checks)?
댓글 수: 4
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!