Scanning a matrix in zigzag order into a vector.
Version 1.0.0 (1.62 KB) by
Shuvo Kumar Paul
zigzag.m takes a matrix as the only input and returns a vector containing the entries of the matrix in "ZIGZAG" fashion.
function C = zigzag(A)
r = size(A,1); % number of rows of the input matrix
c = size(A,2); % number of columns of the input matrix
kk = 2;
C = [];
while kk <= r+c % the lowermost diagonal has only one element
% which has the index r by c
% scan the matrix as long as the last
% diagonal is retrieved
B = [];
% iterate through every element of the input matrix
for ii = 1:r
for jj = 1:c
if ii + jj == kk % sum of the indices in a particular diagonal
% are the same
B = [B,A(ii,jj)];
end
end
end
if mod(kk,2) == 0
C = [C,flip(B)]; % reverse the order of the diagonal entries
% evenly
else
C = [C,B];
end
kk = kk+1;
end
end
Cite As
Shuvo Kumar Paul (2024). Scanning a matrix in zigzag order into a vector. (https://www.mathworks.com/matlabcentral/fileexchange/96229-scanning-a-matrix-in-zigzag-order-into-a-vector), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Created with
R2016a
Compatible with any release
Platform Compatibility
Windows macOS LinuxTags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
Version | Published | Release Notes | |
---|---|---|---|
1.0.0 |