Clear Filters
Clear Filters

The problem with the function 'all'

2 views (last 30 days)
Lulu
Lulu on 18 Nov 2011
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?

Accepted Answer

Sven
Sven on 18 Nov 2011
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?

More Answers (2)

Walter Roberson
Walter Roberson on 18 Nov 2011
all(a > repmat(b,size(a,1),1),2)

Jan
Jan on 18 Nov 2011
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 Comment
Sven
Sven on 18 Nov 2011
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)

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!