Matlab中是否有内置函数来确定置换是偶数还是奇数?

时间:2013-05-03 03:20:26

标签: matlab permutation

  

此问题的变体已被转发到Mathematics Stack ExchangeComputational Science Stack Exchange。可以在这些其他网站上找到其他答案。

这个问题与Getting the mapping for a permutation in MATLAB提出的问题有关。标题基本概括了所有内容。我想知道Matlab中是否有内置函数来确定向量表示的置换是偶数还是奇数。例如,[2 1 4 3 5]是身份置换[1 2 3 4 5]的偶数置换,因为它需要偶数个交换从一个向量到另一个向量。这似乎是人们可能想要经常做的事情,并且可能有内置的功能。人们已经在Web上发布了很长的Matlab文件来实现这一目标。如果我可以让Matlab给我一个排列矩阵,那么我可以采用该矩阵的行列式,但我还没弄清楚如何做到这一点,我也不知道是否有&# 39;快速的方式。

2 个答案:

答案 0 :(得分:7)

我认为没有内置功能。但它有一个简单而有效的解决方案: 您的符号应该是向量的置换矩阵的决定因素。

a = [2 1 4 3 5];
I = speye(length(a));
sign = det(I(:,a));

答案 1 :(得分:2)

有趣的是你问一个排列矩阵。这还够吗?

x = [2 1 4 3 5];
y = eye(numel(x));
evenodd = det( y(:,x) );

如果是偶数,则evenodd的值为1,如果为奇数,则为-1