0

matlab でこの特定の問題にアプローチする効率的な方法はありますか。

このマトリックスまたは可能な配列BeansRiceをマップしようとしています(以下を参照)

Beans={0:1,0:1,0:2,0:2,0:2,0:2,0:1,0:1,0:2,0:2}
[a b c d e f g h i j ] = ndgrid(Beans{:})
BeansRice = [a(:) b(:) c(:) d(:) e(:) f(:) g(:) h(:) i(:) j(:)]

マトリックス/配列 BR に (以下を参照)

BR=[abc, de, fg, hij];

ここで、列 a、b、および c の値がそれぞれ 0 (同点優先) の場合、c>b>a が優先されます。すべての列 a、b、および c の値がそれぞれ 1 の場合 (優先順位なし)、BR(1)=1 です。列 a と b の値が 0 で、列 c の値が 2 の場合、BR(1)=2 です。列 a と b の値が 1 で、列 c の値が 2 の場合、BR(1)=1 です。

インデックス付きのif関数がありますが、マトリックス内の値のランク/順序を使用して同点を解消することができるかどうかを考えていました。これは大きな問題の一部にすぎないため、より効率的なプロセスを探しています。

4

1 に答える 1

0

if 条件の代わりに論理インデックスを使用できます。例えば

BR1(a==1 & b==1 & c==1)=1
BR1(a==0 & b==0 & c==2)=2
BR1(a==1 & b==1 & c==2)=1
...

次に、他の部分を処理し、BR2(d==... & e>...)=##連結して必要なものを取得します

BR=[BR1(:) BR2(:) ...]

等...

于 2013-03-23T06:52:13.843 に答える