【问题标题】:Efficient way of mapping similar inputs to similar outputs将相似输入映射到相似输出的有效方法
【发布时间】:2013-03-12 23:06:34
【问题描述】:

在 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 函数,但我在想是否可以改进它,使用矩阵中值的等级/顺序来打破平局。寻找更高效的流程,因为这只是一个大问题的一部分。

【问题讨论】:

    标签: matlab matrix indexing mapping large-data


    【解决方案1】:

    您可以使用逻辑索引而不是 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(:) ...]

    等等……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2021-10-17
      • 2012-01-07
      • 1970-01-01
      • 2011-05-28
      相关资源
      最近更新 更多