circularmatrix.m.txt

来自「Computes the circulant matrix of a vecto」· 文本 代码 · 共 52 行

TXT
52
字号
%circulant  Computes the circulant matrix of a vector.
%
%   circulant(vec) is a max(size(vec))-by-max(size(vec)) circulant 
%   matrix built with the elements of vec
%
%   Note: The parameter may be either a column or row vector
%
%   Example:
%      v = [ 1 2 3 4 ];
%      circulant( v )
%
%      ans =
%
%      1     2     3     4
%      2     3     4     1
%      3     4     1     2
%      4     1     2     3


function out = circulant( in )

vec = in;
x=0;y=0;

% Check if column vector
n_dims = ndims( vec );
if n_dims == 1
    vec = vec';
elseif n_dims == 2
    [x,y] = size(vec);
    if y~=1
        if x==1
            vec = vec';
        else
            error( 'ERROR: The input must be a vector' );
        end
    end
else
    error( 'ERROR: The input must be a vector' );
	return;
end

[x,y] = size(vec);

out = zeros( x, x );

out(:,1) = vec;
for i=1:x-1
    out(:,i+1) = circshift(out(:,i),-1);
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?