Code covered by the BSD License  

Highlights from
spiral_decomp

from spiral_decomp by Athanasios Makris
Function spiral_decomp decomposes a given matrix into a row vector following spiral order.

[y]=spiral_decomp(A)
function [y]=spiral_decomp(A)
% Function spiral_decomp decomposes a given matrix into a row vector
% following spiral order.
% 
% INPUTS
% ------     
%         A     = An n x m matrix (real or complex)
%
% OUTPUTS
% -------
%         y     = An (1 x (n * m) ) vector containing the elements of 
%                 of A taking in spiral order.
%
% COMPATIBILITY
% -------------
%                 Matlab 7.2 and later
% 
% NOTE
% -----------
%                This function utilizes function matrix_perimeter.m 
%                
% EXAMPLE
% -------
%
% >> A=magic(5)
%
% A =
%
%     17    24     1     8    15
%     23     5     7    14    16
%      4     6    13    20    22
%     10    12    19    21     3
%     11    18    25     2     9
%
%
%
% >> x=spiral_decomp(A)
%
% x =
%
%   Columns 1 through 14 
%
%     17    24     1     8    15    16    22     3     9     2    25    18    11    10
%
%   Columns 15 through 25 
%
%      4    23     5     7    14    20    21    19    12     6    13
%
%
%
% Author  : Athanasios Makris
% Email   : makrisathanasios@netscape.net
% Date    : 04.08.09 (dd/mm/yy)
% Version : 1.0

if nargin ~=1
    error('Function spiral_decomp needs one argument')
end

indx=1;
y=zeros(size(A(:)'));
while ~isempty(A)
    [x,A]=matrix_perimeter(A);
    n=length(x);
    y(indx:indx+n-1)= x;
    indx=indx+n;
end

return;

Contact us at files@mathworks.com