comparing relevant elemnts of two matrix
    7 views (last 30 days)
  
       Show older comments
    
Hi all,
I have two matrics like below:
      a=[9 7 NaN; 6 3  8; 15 NaN 5; NaN 4 2];
      b= [10,14,NaN;10,10,13;10,NaN,10;NaN,10,10;] ;
I want to see if each element of "a" is less than or equal to its corresponding element in "b"?
 how can I write this program .
 Thanks in advance.
Accepted Answer
  Image Analyst
      
      
 on 30 Nov 2012
        Maybe this is what you want:
a=[9 7 NaN; 6 3  8; 15 NaN 5; NaN 4 2]
b= [10,14,NaN;10,10,13;10,NaN,10;NaN,10,10;]
% Subtract the two. 
% The value will be negative when a(r,c) < b(r,c).
differenceMatrix = a-b
% Make that into a boolean map of where a<b.
% It will be true (1) where a<b.
mapOfWhereAisSmallerThanB = differenceMatrix<0
% Just for fun, do the converse.
% Make that into a boolean map of where b<a.
% It will be true (1) where b<a.
mapOfWhereBisSmallerThanA = differenceMatrix > 0
% See if all non-Nan values have a<b
nonNanIndexes = ~isnan(a) & ~isnan(b)
if all(differenceMatrix(nonNanIndexes) < 0)
  msgbox('All of a < b');
else
  msgbox('Not all of a is < b');
end
In the command window:
a =
     9     7   NaN
     6     3     8
    15   NaN     5
   NaN     4     2
b =
    10    14   NaN
    10    10    13
    10   NaN    10
   NaN    10    10
differenceMatrix =
    -1    -7   NaN
    -4    -7    -5
     5   NaN    -5
   NaN    -6    -8
mapOfWhereAisSmallerThanB =
     1     1     0
     1     1     1
     0     0     1
     0     1     1
mapOfWhereBisSmallerThanA =
     0     0     0
     0     0     0
     1     0     0
     0     0     0
nonNanIndexes =
     1     1     0
     1     1     1
     1     0     1
     0     1     1
0 Comments
More Answers (3)
  Vishal Rane
      
 on 30 Nov 2012
        
      Edited: Vishal Rane
      
 on 30 Nov 2012
  
      By 'little-equal' I assume you mean 'less than or equal'.
Use
 a <= b
assuming a,b are of same dimensions.
0 Comments
  Wayne King
    
      
 on 30 Nov 2012
        
      Edited: Wayne King
    
      
 on 30 Nov 2012
  
      I'll assume that " littel-equal " means "less than or equal to"
 a=[9 7 NaN; 6 3  8; 15 NaN 5; NaN 4 2];
 b= [10,14,NaN;10,10,13;10,NaN,10;NaN,10,10;] ;
 indices = find(a<=b);
 a(indices)
The above gives the elements of a that are less than or equal to the corresponding element of b.
or
C = a<=b;
The matrix C has a 1 where the element of a is less than or equal to the element of b and a 0 otherwise
See Also
Categories
				Find more on Resizing and Reshaping Matrices 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!