compare two values and chosing the higher one
조회 수: 31 (최근 30일)
이전 댓글 표시
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
답변 (3개)
KSSV
2017년 11월 23일
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
Walter Roberson
2017년 11월 23일
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
Walter Roberson
2017년 11월 23일
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!)
Andrei Bobrov
2017년 11월 23일
편집: Andrei Bobrov
2017년 11월 23일
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);
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!