将类似输入映射到类似输出的有效方法

时间:2013-03-22 23:24:19

标签: matlab matrix indexing mapping large-data

在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函数,但我在想是否有可能改进它,使用矩阵中值的排序/顺序来打破关系。寻找更有效的流程,因为这只是一个大问题的一个子问题。

1 个答案:

答案 0 :(得分: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(:) ...]

等...