No BSD License  

Highlights from
M-File Alignment

image thumbnail
from M-File Alignment by Andre Strobel
Functions for cleaning m-code alignment

fVectorOrientation(vVector, vOrientation)
function [vOutVector, vSuccess] = fVectorOrientation(vVector, vOrientation)

%fVectorOrientation ensures column or row vector orientation
%
%  [vOutVector, vSuccess] = fVectorOrientation(vVector, vOrientation)
%
%  vOrientation = 'column' : make vVector a column vector
%  vOrientation = 'row'    : make vVector a row vector
%  vOrientation = 'cgr'    : make vVector a matrix with column size greater row size
%  vOrientation = 'rgc'    : make vVector a matrix with column size less than row size
%
%  Result = 0 : unsuccessful operation
%  Result = 1 : vVector was a scalar
%  Result = 2 : vVector was column vector
%  Result = 3 : vVector was row vector
%  Result = 4 : vVector was matrix with column size greater row size
%  Result = 5 : vVector was matrix with column size less than row size
%  Result = 6 : vVector was a square matrix
%  Result = 7 : vVector was empty
%
%  Function for ensuring column or row vector orientation.
%
%  Example: [vOutVector, vSuccess] = fVectorOrientation([1, 2, 3], 'column')
%
%  Author:     Dipl.-Ing. Andr Manfred Strobel
%  Copyright:  1999-2001 by DaimlerChrysler AG, FT1/AK
%  Matlab:     6.0, R12 (Win)
%  Date:       2001/01/15 11:00
%  Version:    001.11 * Released * / beta / alpha
%  Release:    01.00

vOrientNum = 0; % init orientation number with zero

switch vOrientation
case {'column'}
	% return column vector
	vOrientNum = 2;
case {'row'}
	% return row vector
	vOrientNum = 3;
case {'cgr'}
	% return column > row
	vOrientNum = 4;
case {'rgc'}
	% return column < row
	vOrientNum = 5;
otherwise
	% unspecified orientation
	error(['Wrong orientation specified.'])
end % of switch

vSuccess = 0; % first there is no successful operation

vSize = size(vVector); % get size of vVector

if isempty(vVector)
	% vVector is empty
	vSuccess = 7; % vVector is empty
end % of if

if isequal(vSize(1), 1)
	% vVector is a scalar or a row vector
	
	if isequal(vSize(2), 1)
		% vVector is a scalar
		vSuccess = 1; % vVector is a scalar
	else
		% vVector is a row vector
		vSuccess = 3; % vVector is a row vector
	end % of if
	
elseif isequal(vSize(2), 1)
	% vVector is a column vector
	
	vSuccess = 2; % vVector is a column vector
	
elseif ~isequal(vSuccess, 7)
	% vVector is a matrix and not empty
	
	if (vSize(1) > vSize(2))
		% column > row
		vSuccess = 4;
	elseif (vSize(1) < vSize(2))
		% column < row
		vSuccess = 5;
	elseif isequal(vSize(1), vSize(2))
		% column == row
		vSuccess = 6;
	end % of if
	
end % of if

if isequal(vSuccess, 1)
	% vVector is a scalar
	
	vOutVector = vVector; % return the scalar unchanged
	
elseif isequal(vSuccess, 7)
	% vVector is a scalar
	
	vOutVector = vVector; % return the empty vector unchanged
	
else
	% vVector is not a scalar
	
	if isequal(vSuccess, 6)
		% vVector is a square matrix
		
		if (isequal(vOrientNum, 4) | isequal(vOrientNum, 5))
			% matrix should be returned
			vOutVector = vVector; % return the square matrix
		elseif isequal(vOrientNum, 2)
			% column vector should be returned
			warning(['Returned first column of input matrix.'])
			vOutVector = vVector(:, 1); % return the first column
		elseif isequal(vOrientNum, 3)
			% row vector should be returned
			warning(['Returned first row of input matrix.'])
			vOutVector = vVector(1, :); % return the first column
		end % of if
		
	elseif (isequal(vSuccess, 2) | isequal(vSuccess, 3))
		% vVector is a vector
		
		if (isequal(vOrientNum, 2) | isequal(vOrientNum, 4))
			% matrix column > row
			if isequal(vSuccess, 2)
				% input column > row
				vOutVector = vVector; % return vVector
			elseif isequal(vSuccess, 3)
				% input column < row
				vOutVector = vVector'; % return transposed vVector
			end % of if
		elseif (isequal(vOrientNum, 3) | isequal(vOrientNum, 5))
			% matrix column < row
			if isequal(vSuccess, 2)
				% input column > row
				vOutVector = vVector'; % return transposed vVector
			elseif isequal(vSuccess, 3)
				% input column < row
				vOutVector = vVector; % return vVector
			end % of if
		end % of if
		
	elseif (isequal(vSuccess, 4) | isequal(vSuccess, 5))
		% vVector is a matrix
		
		if isequal(vOrientNum, 2)
			% column vector
			% warning(['Returned full input matrix.'])
			if isequal(vSuccess, 4)
				% input column > row
				vOutVector = vVector; % return vVector
			elseif isequal(vSuccess, 5)
				% input column < row
				vOutVector = vVector'; % return transposed vVector
			end % of if
		elseif isequal(vOrientNum, 3)
			% row vector
			% warning(['Returned full input matrix.'])
			if isequal(vSuccess, 4)
				% input column > row
				vOutVector = vVector'; % return transposed vVector
			elseif isequal(vSuccess, 5)
				% input column < row
				vOutVector = vVector; % return vVector
			end % of if
		elseif isequal(vOrientNum, 4)
			% matrix column > row
			if isequal(vSuccess, 4)
				% input column > row
				vOutVector = vVector; % return vVector
			elseif isequal(vSuccess, 5)
				% input column < row
				vOutVector = vVector'; % return transposed vVector
			end % of if
		elseif isequal(vOrientNum, 5)
			% matrix column < row
			if isequal(vSuccess, 4)
				% input column > row
				vOutVector = vVector'; % return transposed vVector
			elseif isequal(vSuccess, 5)
				% input column < row
				vOutVector = vVector; % return vVector
			end % of if
		end % of if
		
	end % of if
	
end % of if

Contact us at files@mathworks.com