replace values in columns of a matrix
5 ビュー (過去 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!