replace values in columns of a matrix
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
I have a matrix of random numbers, with some repeating. For example:
OV =
 29.5  -29.3  82.2  -49.1
 12.6  -62.2  82.2  -72.8
 114.8  -29.3  -6.9  156
 29.5  -97.1  -42.5  71.1
 -63.8  119  33.3  -49.1
I want to do some columnwise operations based on the values of the first row. So far I have
 idxo             = bsxfun(@ne,OV,OV(1,:))*2.5; % =0 for OV(1,:)=OV and 2.5 otherwise
 idxo(sec_ovec<0) = 1;                          % for OV<0, =1
which gives me a new matrix idxo as follows:
 0  1  0  1
 2.5  1  0  1
 2.5  1  1  2.5
 0  1  1  2.5
 1  2.5  2.5  1
The last thing I need is to, for all OV rows which have a negative number in the first row: make all corresponding idxo values =0 if OV is negative, and =1 otherwise.
I can do this, but my solution is inefficient. What is a fast way to do this? Speed is important because it is a big bottleneck in my code.
The end result should modify column 2 and 4 to give
idxo =
 0  0  0  0
 2.5  0  0  0
 2.5  0  1  1
 0  0  1  1
 1  1  2.5  0
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
			
	제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

