The problem with the function 'all'
Show older comments
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
More Answers (2)
Walter Roberson
on 18 Nov 2011
all(a > repmat(b,size(a,1),1),2)
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
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)
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!