shifting of matrix elements
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
sadiqa ilyas
le 29 Fév 2020
Commenté : sadiqa ilyas
le 1 Mar 2020
hi,Can i divide the matrix into layers ,outer layer(boundary elements)then second layer and so on.
for example
original matrix is
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56
57 58 59 60 61 62 63 64
After one bit right shift of outside boundary and inside layers (its like contour)
9 1 2 3 4 5 6 7
17 18 10 11 12 13 14 8
25 26 27 19 20 21 15 16
33 34 35 36 28 22 23 24
41 42 43 37 29 30 31 32
49 50 44 45 46 38 39 40
57 51 52 53 54 55 47 48
58 59 60 61 62 63 64 56
0 commentaires
Réponse acceptée
David Hill
le 29 Fév 2020
Not sure if there is an easier way, but this does it for you.
function M=matShift(M)
x=size(M,1);
for k=1:floor(x/2)
z=x-2*(k-1)-1;
y=circshift([M(k,k:end-k),M(k:end-k,end-k+1)',M(end-k+1,end-k+1:-1:k+1),M(end-k+1:-1:k+1,k)'],1);
M(k,k:end-k)=y(1:z);
M(k:end-k,end-k+1)=y(z+1:2*z);
M(end-k+1,end-k+1:-1:k+1)=y(2*z+1:3*z);
M(end-k+1:-1:k+1,k)=y(3*z+1:4*z);
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!