MATLAB Answers

mr mo

Finding equal values, between values, greater than and lesser than values of a matrix based on some values

Asked by mr mo
on 7 Nov 2017
Latest activity Edited by mr mo
on 18 Dec 2017
Hi. Suppose I have matrix A of size (m*n) e.g.
A = [12 44
93 43
128 44
145 41
180 41
220 40
280 40];
and the a,b,c and d values e.g.
a = 10
b = 95
c = 145
d = 290
As you know
a < A(1,1)
A(2,1) < b < A(3,1)
c = A(4,1)
d > A(7,1)
I want Matlab to do above process and search the a,b,c and d values in the A(:,1) and tell me that the a,b,c and d values are lesser than or greater than or equal or lying between what members of A(:,1).
Thanks for your help.


Show 1 older comment
I want to know the values a,b,c,d is lying between what members of A(:,1)? or in case of equality I want to know these values a,b,c,d are equal to what members of A(:,1)? and I want to know a,b,c or d is lesser than A(first,1) or not ? and I want to know a,b,c or d is greater than A(end,1) or not ?
You did not answer my request. Please provide the exact variable outputs you would like based on your example. I.e., at the end of your code, what variables would you like as output and what specific values would they contain for your example above?
for this example I want to reach these outputs if we consider that the a,b,c,d values are given to the code respectively, so I want these out puts respectively:
0 12
93 128
280 1000
which means a is lesser than 12 and b is between 93 and 128 and c is equal to 145 and d is between 280 and 1000.

Sign in to comment.

1 Answer

Answer by Andrei Bobrov
on 7 Nov 2017
 Accepted Answer

A = [12 44
93 43
128 44
145 41
180 41
220 40
280 40];
a = 10;
b = 95;
c = 145;
d = 290;
ii_interval_of_1st_column_of_A = discretize([a,b,c,d],[-inf;A(:,1);inf]);


ab = 180;
AA = [-inf;A(:,1);inf];
Aout = hankel(AA(1:end-1),AA(end-1:end));
ii = discretize(ab,AA);
out = Aout(ii,:);
t = bsxfun(@eq,out,ab);
out(xor(t(:,1),t(:,2)),2) = nan;
Thank you very much. This code works very well now.
@Andrei Bobrov: Hi. Thanks again for your help.
I run your above code in my matlab m-file and I must run this code in for loops, but this code is taking to much running time.
For example I run the for loops 5 times and its running time is given by Run and Time tool in Matlab in the below image.
The red digits are showing the running time of that line in second.
I must run your code 1000 times and the running time will be more than 10 hours.
Is there any possibilities to change this code to decreasing the running time?
Thanks you very much.

Sign in to comment.