Hi everyone,
a = { {21 3 1}, {22 32 2}, {21 31 2}, {22 32 1} };
I would like to know the locations of the cells containing a specific value- {21 31 1}
In this case, it's 1.
I try to use like below:
Match = {21 31 1};
CorrectMatch = find (cellfun(@(x) isequal (x,Match), a(1,:)));
but it doesn't work out
Could any one help me?

댓글 수: 1

Walter Roberson
Walter Roberson 2019년 4월 20일
Use a numeric vector for Match because cellfun will be passing in the content of the cells

댓글을 달려면 로그인하십시오.

 채택된 답변

Image Analyst
Image Analyst 2019년 4월 20일

1 개 추천

Your Match is not a pattern in your "a" so that's why it didn't find it. {21 31 1} is nowhere in a. If it still does not work and you want a simple, intuitive for loop, then try this:
a = { {21 3 1}, {22 32 2}, {21 31 2}, {22 32 1} };
% Define what we want to find
pattern = {21 3 1};
% Instantiate output vector of where matches were found.
matches = false(size(a));
for col = 1 : length(a)
if isequal(a{col}, pattern)
matches(col) = true;
end
end
matches % Show matches in command window.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

태그

질문:

2019년 4월 20일

답변:

2019년 4월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by