Scanning a matrix in zigzag order into a vector.

zigzag.m takes a matrix as the only input and returns a vector containing the entries of the matrix in "ZIGZAG" fashion.
6 Downloads
Updated 22 Jul 2021

View License

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 Linux

Community Treasure Hunt

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

Start Hunting!
Version Published Release Notes
1.0.0