Matlab 如何计算数组的循环置换?
如何在matlab中计算数组的循环置换easy[1 2 3 4]。matlab中有没有可以直接计算循环置换的函数 circshift做你需要的吗?circshift做你需要的吗?你可以使用circshift来移动圆中的数组元素。然后始终拾取数组的相同值:Matlab 如何计算数组的循环置换?,matlab,math,Matlab,Math,如何在matlab中计算数组的循环置换easy[1 2 3 4]。matlab中有没有可以直接计算循环置换的函数 circshift做你需要的吗?circshift做你需要的吗?你可以使用circshift来移动圆中的数组元素。然后始终拾取数组的相同值: A=(1:5)'; P = A(1); P = 1 Y = circshift(A,1); P = A(1); P = 5; 您可以使用circshift移动圆中的数组元素。然后始终拾取数组的相同值: A=(1:5)'
A=(1:5)';
P = A(1);
P =
1
Y = circshift(A,1);
P = A(1);
P =
5;
您可以使用circshift移动圆中的数组元素。然后始终拾取数组的相同值:
A=(1:5)';
P = A(1);
P =
1
Y = circshift(A,1);
P = A(1);
P =
5;
我假设循环置换的意思是(
1234
被认为是与其循环移位相同的置换23441
;您希望所有置换彼此之间的任何循环移位都不同):
一种可能的方法是生成所有排列,识别循环相等的排列,并且每个组只保留一个排列。这可以只保留那些以给定索引开始的排列,例如1。由此可知,问题可以通过生成元素2,3。。。以及前面的连接元件1:
x = [ 1 2 3 4 ]; %// data
p = perms(x(2:end)); %// generate all permutations of x(2), x(3), ...
p = [ repmat(x(1),size(p,1),1) p ]; %// attach x(1) in front of each permutation
在本例中,结果是:
p =
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
或者,如果您的意思是(您希望生成彼此循环移位的所有置换:
1234
,2341
,等等;类似于1234
的内容是不允许的):
结果:
p =
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
我假设循环置换的意思是(
1234
被认为是与其循环移位相同的置换23441
;您希望所有置换彼此之间的任何循环移位都不同):
一种可能的方法是生成所有排列,识别循环相等的排列,并且每个组只保留一个排列。这可以只保留那些以给定索引开始的排列,例如1。由此可知,问题可以通过生成元素2,3。。。以及前面的连接元件1:
x = [ 1 2 3 4 ]; %// data
p = perms(x(2:end)); %// generate all permutations of x(2), x(3), ...
p = [ repmat(x(1),size(p,1),1) p ]; %// attach x(1) in front of each permutation
在本例中,结果是:
p =
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
或者,如果您的意思是(您希望生成彼此循环移位的所有置换:
1234
,2341
,等等;类似于1234
的内容是不允许的):
结果:
p =
1 2 3 4
2 3 4 1
3 4 1 2
4 1 2 3
使用
toeplitz
矩阵:
%// Some random data
A = randi(100,[1 n]);
%// all circular shifts to the right
A(toeplitz(1:numel(A), [1 numel(A):-1:2]))
%// all circular shifts to the left
A(rot90(toeplitz(1:numel(A), [1 numel(A):-1:2])))
可能不是最快的,但很高兴知道:)使用
toeplitz
矩阵:
%// Some random data
A = randi(100,[1 n]);
%// all circular shifts to the right
A(toeplitz(1:numel(A), [1 numel(A):-1:2]))
%// all circular shifts to the left
A(rot90(toeplitz(1:numel(A), [1 numel(A):-1:2])))
可能不是最快的,但很高兴知道:)你想要一个包含所有循环置换的矩阵,还是只包含一个(随机?)循环置换?@LuisMendo我想要所有循环置换你想要一个包含所有循环置换的矩阵,还是只包含一个(随机?)循环置换的矩阵循环置换?@LuisMendo我要所有的循环置换permutations@Deepesh:哪种解决方案适合您的需要?第一个还是第二个?@Deepesh:哪种解决方案适合您的需要?第一个还是第二个?