1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| B=[3 2 4 1;2 4 1 3;3 1 4 2];
BCirc=zeros(size(B,2)*size(B,1),size(B,2))
for i=1:size(B,1)
BCirc((i-1)*size(B,2)+1:i*size(B,2),:)=cell2mat(arrayfun(@(k) circshift(B(i,:),[1 k]), ...
(0:-1:-numel(B(i,:))+1).',...
'UniformOutput', false));
end
BCirc
BCirc =unique(BCirc ,'rows')
n=5;
m = size(BCirc,1);
P = zeros(n*m,n);
Pl = zeros(n,n);
Pu = zeros(n,n);
for i = 1:size(BCirc,1)
BB = repmat(BCirc(i,:),n-1,1) ;
Pl(2:n,1:n-1) = tril(BB);
Pu(1:n-1,2:n) = triu(BB);
P((i-1)*n+1:i*n,:) = Pl+Pu+diag(n*ones(1,n));
end |
Partager