事件多计算器/生成器? - MatLab

时间:2016-04-07 17:50:22

标签: matlab events generator combinations

对于某些人来说,这可能是一个显而易见的问题,但我是一名初学者,并且非常感谢我能得到的任何链接或建议。

我正在尝试创建一个代码来生成一个矩阵,其中的值基于可能发生的事件的数量。

我正在考虑每个最终成员我有一个独立的事件(这适用于化学中的最终成员混合场景)。这些事件中的每一个都可以以两种不同的方式发生(值可以是负数或正数)。我也试图使这个代码能够进行任意数量的独立事件。我认为这个矩阵是,ncol =独立事件的数量,nrows =事件倍数。

例如:如果我有3个独立事件(矩阵中有3列),每个事件有两个可能出现(正或负),这意味着有8个事件倍数或组合(矩阵中有8行)。

对于每个组合(行),如果我只使用“1”表示值为正,并且“-1”表示值为负,我想自动生成结果。行组合的顺序无关紧要。

不幸的是我正在使用MatLab R2015a,但我在想MatLab R2016a中我所谓的“combnk”或“combntns”的功能类似。

% Beginning of code:
  NoIndEvents = 3;   % Number of independent events
  NoOccur     = 2;   % Number of occurrences for each ind. event
  newmatrix = ones(NoOccur^NoIndEvents,NoIndEvents); % Initialize matrix

  % Have no idea how to generate this part...

  % My desired output (no hard coding & easily modified for any
  % number of columns/ ind. events)

  newmatrix = 
       1   1   1
      -1  -1  -1
       1   1  -1
       1  -1   1
      -1   1   1
      -1  -1   1
      -1   1  -1
       1  -1   1

有谁知道我可以使用的功能吗?我有一种感觉,这可能是非常容易的,我无法将我的大脑包裹在它的编码方面......

提前谢谢! 〜悉尼

1 个答案:

答案 0 :(得分:0)

问题是nchoosekcombnk等不考虑对结果进行排序,因此他们不会产生足够的组合(即[-1 -1 1]与{相同} {1}})。您可以生成输入的所有排列(每个可能的值重复[1 -1 -1]次)。然后在结果的前NoIndEvents列上使用unique来获取所有排列。

NoIndEvents