2017-01-13 6 views
1

私はrankingMatを持っています。これには株式ティッカーのランキングが含まれています。すべての列は1つのティッカーを表し、すべての行はある時点を表します。ランク付けは降順に行われ、すなわち、rankingMatの1は、その期間の最高ランク(読み取り:行)を識別する。ティッカー/列4は現金担保を表します。これはさらに重要な道のりです。2つの条件による論理インデックス

ここで、私は投資を考えている株式ティッカーを特定したいと思います。二つの条件が存在する:

  1. 私は、私は現金のみに高いまたは等しいランクの比較されティッカーに投資、以下3
  2. ほかにランクを持っているティッカーへの投資は、(ティッカー/コラム4)。

    rankingMat = ... 
        [NaN, NaN, NaN, NaN, NaN, NaN; ... 
        1, 5, 2, 3, 6, 4; ... 
        4, 5, 2, 3, 6, 1; ... 
        4, 1, 2, 5, 6, 3; ... 
        6, 4, 5, 2, 1, 3; ... 
        2, 3, 4, 6, 1, 5; ... 
        3, 6, 4, 1, 2, 5; ... 
        2, 5, 6, 1, 4, 3]; 
    
    portfolio = rankingMat <= 3; 
    

    結果は次のようになります:

    portfolio = ... 
        [0, 0, 0, 0, 0, 0; ... 
        1, 0, 1, 1, 0, 0; ... 
        0, 0, 1, 1, 0, 1; ... 
        0, 1, 1, 0, 0, 1; ... 
        0, 0, 0, 1, 1, 1; ... 
        1, 1, 0, 0, 1, 0; ... 
        1, 0, 0, 1, 1, 0; ... 
        1, 0, 0, 1, 0, 1] 
    

    私の問題はでは条件2である


は、私が最初に条件を満たした結果を得ることができますよすべての行で、整数が3以下であるかどうかを比較する必要があるだけでなく、その行の列4の整数よりも小さいかどうかを確認する必要があります。私はforループを回避するソリューションを探しています。私はそれが索引付けで可能だと思います。だから、どんなヒントも高く評価されています。

最終的な結果は次のようになります。

portfolio = ... 
    [0, 0, 0, 0, 0, 0; ... 
    1, 0, 1, 1, 0, 0; ... 
    0, 0, 1, 1, 0, 1; ... 
    0, 1, 1, 0, 0, 1; ... 
    0, 0, 0, 1, 1, 0; ... 
    1, 1, 0, 0, 1, 0; ... 
    0, 0, 0, 1, 0, 0; ... 
    0, 0, 0, 1, 0, 0] 

答えて

1
% Prior to R2016b 
portfolio = rankingMat <= 3 & ... 
      bsxfun(@lt, rankingMat, rankingMat(:,4)); 

% On or after R2016b 
portfolio = rankingMat <= 3 & ... 
      rankingMat < rankingMat(:,4); 
+1

...これは特に2016Bバージョンのため、かなりきちんとしたソリューションです。それは非常に直感的です。 bsxfunに関する1つの質問は、実行速度の観点から、ループを使用するこの関数は、forループを使用してその問題を解決するためにbsxfunに匹敵するのですか? – Andi

+0

'bsxfun'は組み込み関数です。内部的にはもちろん "ループ"を行いますが、MathWorksは実際にできるだけ早くそれを実現しました。これはマルチスレッド化されているため、複数のコアの比較を同時に評価することができますが、MATLABの単純なループでは1つのコアしか使用できません。 –

+0

R2016bでは、彼らは最終的にそれを言語レベルでの実装に有利に取り除きました。 [Here](https://blogs.mathworks.com/loren/2016/10/24/matlab-arithmetic-expands-in-r2016b/)は少し背景です。 –

関連する問題