compare two values and chosing the higher one

31 views (last 30 days)
user = 2;
subcarrier = 4;
randn(user,subcarrier)
If i run this i am getting
ans =
-0.1623 -0.5320 -0.8757 -0.7120
-0.1461 1.6821 -0.4838 -1.1742
from the values i want ans to be displayed as
-0.1623 0 -0.8757 -0.7120
0 1.6821 0 0.
how can i modify the code to get this output
  1 Comment
Prabha Kumaresan
Prabha Kumaresan on 23 Nov 2017
Edited: Walter Roberson on 23 Nov 2017
0 0 0 -0.7120
-0.1461 1.6821 -0.4838 0
for this output i want to modify the code

Sign in to comment.

Answers (3)

KSSV
KSSV on 23 Nov 2017
A = [-0.1623 -0.5320 -0.8757 -0.7120
-0.1461 1.6821 -0.4838 -1.1742];
B = [-0.1623 0 -0.8757 -0.7120
0 1.6821 0 0.] ;
C = zeros(size(A)) ;
[val,idx] = max(abs(A)) ;
% [I_row, I_col] = ind2sub(size(A),idx) ;
% C(I_row,I_col) = val ;
for i = 1:size(A,2)
[val,idx] = max(abs(A(:,i))) ;
C(idx,i) = val ;
end
  1 Comment
Prabha Kumaresan
Prabha Kumaresan on 23 Nov 2017
Could you tell me how to modify the code if A has 10 rows and 64 columns of values instead of [-0.1623 -0.5320 -0.8757 -0.7120 -0.1461 1.6821 -0.4838 -1.1742];

Sign in to comment.


Walter Roberson
Walter Roberson on 23 Nov 2017
user = 2;
subcarrier = 4;
temp = randn(user,subcarrier);
temp( bsxfun(@lt, temp, max(temp)) ) = 0
Note: your requirement is not defined in the case where there are duplicate maximum values.
  1 Comment
Walter Roberson
Walter Roberson on 23 Nov 2017
My code is already set up to give only one non-zero entry per column. (All of the entries in a column could be 0 if it happened that randn produced an exact 0!)

Sign in to comment.


Andrei Bobrov
Andrei Bobrov on 23 Nov 2017
Edited: Andrei Bobrov on 23 Nov 2017
a = [ -0.1623 -0.5320 -0.8757 -0.7120
-0.1461 1.6821 -0.4838 -1.1742];
out = (a == max(a)).*a;
or
out = a.*bsxfun(@eq,max(a),a);

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!