Insertion of the index

2 次查看(过去 30 天)
The number of jobs n =4 which are in k = [3,2,4,6].
First index value in k is 3, now i need to insert the first index value to second index value which is k1 = [2,3,4,6]. From k,first index value is inserted to the third index value k2 = [2,4,3,6]. From k, first index value is inserted to fourth index value k3 = [2,4,6,3]. Now the first index process is over. Select the second index form k and insert the values in different position. k4 = [2,3,4,6]; k5 = [3,4,2,6]; k6= [3,4,6,2].
Select the third index from k and insert the values in different position. k7 = [4,3,2,6]; k8= [3,4,2,6]; k9 = [3,2,6,4].
Select the fourth index from k and insert the valued in different position. K10 = [6,3,2,4]; k11 = [3,6,2,4]; k12 = [3,2,6,4].
This process has to be repeated with respect to the number of jobs.

采纳的回答

Roger Stafford
Roger Stafford 2013-12-18
Here's a way using two nested for-loops:
K = zeros(n*(n-1),n);
r = 0;
for i1 = 1:n
p = [1:i1-1,i1+1:n];
for i2 = p
r = r + 1;
K(r,:) = k([p(1:i2-1),i1,p(i2:n-1)]);
end
end
The rows of K are your k1, k2, k3, ...,

更多回答(1 个)

Andrei Bobrov
Andrei Bobrov 2013-12-18
编辑:Andrei Bobrov 2013-12-18
n =4;
k = [3,2,4,6];
i1 = repmat((1:n)',1,n);
p = i1.*~eye(n)+triu(ones(n));
i3 = rem(bsxfun(@plus,reshape(0:n-1,1,1,[]),p)-1,n)+1;
i02 = reshape(i3,n,[])';
i02((1:n:size(i02,1)) + (0:n-1),:)=[];
out = k(i02);

类别

Help CenterFile Exchange 中查找有关 MATLAB Parallel Server 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by