首页 > 解决方案 > 如何在MATLAB中对矩阵中每一行的列进行置换?

问题描述

我有一个矩阵

  A = [1,2;3,4];

我想生成一个新矩阵 B,其中包含每行列的所有排列。

 B = [1,2;2,1;3,4;4,3]

是否有单线解决方案?

标签: matlabpermutation

解决方案


我只能想到一个包含单元阵列的解决方案,因此我不确定这是否“有效”。另外,看看.perms

% Input.
A = [1, 2; 3, 4]

% Expected output.
B = [1, 2; 2, 1; 3, 4; 4, 3]

% Calculate output.
C = sortrows(cell2mat(cellfun(@(x) perms(x), mat2cell(A, ones(1, size(A, 1)), 2), 'UniformOutput', false)))

A =
   1   2
   3   4

B =
   1   2
   2   1
   3   4
   4   3

C =
   1   2
   2   1
   3   4
   4   3

推荐阅读