The problem with the function 'all'

Hello,
I need to compare two data sets, i.e.
a = [6 11 9; 5 4 3]; b = [1 2 3];
all(a>b); % The problem is that 'a' contains multiple rows, while 'b' - only a single row.
Therefore, the is an error: Error using > Matrix dimensions must agree.
But I'm expecting the following:
ans =
1
1
How can solve this?

 채택된 답변

Sven
Sven 2011년 11월 18일

1 개 추천

I think you want to compare a(1,:) to b, and a(2,:) to b. So try this using bsxfun:
all(bsxfun(@gt, a, b),2)
Does that give what you expected?

추가 답변 (2개)

Walter Roberson
Walter Roberson 2011년 11월 18일

1 개 추천

all(a > repmat(b,size(a,1),1),2)
Jan
Jan 2011년 11월 18일

1 개 추천

All values are smaller, if the smallest is smaller:
a = [6 11 9; 5 4 3];
b = [1 2 3];
min(a, [], 1) > b
For a=rand(1000, 1000), b = rand(1, 1000) this 30% faster than the BSXFUN approach, I assume because it needs less temporary memory.

댓글 수: 1

Sven
Sven 2011년 11월 18일
I was thinking something like this might be more efficient. I think the answer that mimics:
all(bsxfun(@gt, a, b),2)
would if fact be:
min(a,[],2) > max(b)

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

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

태그

질문:

2011년 11월 18일

Community Treasure Hunt

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

Start Hunting!

Translated by