Elementwise comparison

16 vues (au cours des 30 derniers jours)
Brian
Brian le 5 Avr 2012
Hi, I have a matrix that I would like to filter the row results using a different filter for each row without having to write a for statement. Take the following example.
z = [1 2 3;2 1 3];
y = [2;1];
I'd like to be able to say, count the values by row from z where each specific value is compared to the row value from y. I would expect the following to yield a 2x3 logical that I could perform my sum function on.
x = z .> y;
Would yield
x = logical([0 0 1;1 0 1]);
And
sum(x,2) = [1;2]
Thanks a lot, Brian

Réponse acceptée

Oleg Komarov
Oleg Komarov le 5 Avr 2012
There's no logical elementwise operator since they already require the array to match dimensions.
Thus, one way is to replicate y to the size of z and then compare. To avoid repmat, you can use directly:
bsxfun(@gt,z,y)
  1 commentaire
Brian
Brian le 5 Avr 2012
That's perfect. Thank you.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by