Insertion of the index

1 回表示 (過去 30 日間)
Bathrinath
Bathrinath 2013 年 12 月 18 日
編集済み: Andrei Bobrov 2013 年 12 月 18 日
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 件のコメント
Bathrinath
Bathrinath 2013 年 12 月 18 日
Thanks sir its working fine

サインインしてコメントする。

その他の回答 (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 Center および File ExchangeMATLAB Parallel Server についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by