2 つのセル配列 R と C (R(n 要素)、C(m 要素) の 2 つのベクトル) があり、R の各要素を R の各要素と比較し、C の各要素を各要素と比較します。 C. 比較とは、2 つのセルの交点を見つけることです。その結果、2 つの行列を取得したいと考えています。R nxn に対する 1 つの行列 Q で、セル Q(i,j) は 2 つの要素 R(i) と R(j) の交点であり、C mxm に対する 2 番目の行列 P であり、セル P(i,j) は次の交点です。 2 つの要素 C(i) および C(j)。通常、2 つの for ループを使用してこれを行うことができますが、私のデータは非常に大きく、計算を高速化する方法はあるのでしょうか? 最初のアイデアは、セル配列を置き換えることでした。各セルには、比較したい行 (ベクトル R) または列 (ベクトル C) のインデックスがあります (バイナリ行列 BM の行と列、BM は入力データです)。そうならR(1) = {2 3 4}
、BM が 5x5 の場合、R(1,:)=[0 1 1 1 0]
. このバイナリ行列 RI を使用すると、1 つのループだけで各行を各行と比較できます。しかし、それでも行数に戻る必要があります。
R(1,:) = [0 1 1 1 0];
R(2,:) = [0 1 1 0 0]; %then
Q(1,2) = [0 1 1 0 0]; %(intersection of element R(1) and R(2)) and
C(1,:) = [1 1 0 0 0];
C(2,:) = [1 0 0 1 0]; %then
P(1,2) = [1 0 0 0 0]; % Now I want to obtain
Results(i,j) = sum(BM(Q(1,2),P(1,2)))=sum(BM([2 3],[1]));
これに対処し、セル配列の 2 つのベクトルを 2 つのループなしで比較する方法はありますか?