MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by som on 30 Nov 2012

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.

*No products are associated with this question.*

Answer by Image Analyst on 30 Nov 2012

Accepted answer

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

Answer by Vishal Rane on 30 Nov 2012

Edited by 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.

See Relational Operators for more info.

Answer by Wayne King on 30 Nov 2012

Edited by 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

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/55256#comment_114510

Can you mention the range?