• 大小: 649KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2024-01-28
  • 语言: Matlab
  • 标签: 四元数  

资源简介

本文件包含了四元数理论中的所有MATLAB函数,可直接进行应用,是应用四元数理论不可缺少的

资源截图

代码片段和文件信息

function [U B V] = bidiagonalize(A)
% Bidiagonalize A  such that U * A * V = B and U‘ * B * V‘ = A. B is the
% same size as A has no vector part and is upper or lower bidiagonal
% depending on its shape. U and V are unitary quaternion matrices.

% Copyright ?2005 2008 Stephen J. Sangwine and Nicolas Le Bihan.
% See the file : Copyright.m for further details.

error(nargchk(1 1 nargin)) error(nargoutchk(3 3 nargout))

% References:
%
% Sangwine S. J. and Le Bihan N.
% Quaternion singular value decomposition based on bidiagonalization
% to a real or complex matrix using quaternion Householder transformations
% Applied Mathematics and Computation 182(1) 1 November 2006 727-738 
% DOI:10.1016/j.amc.2006.04.032.
%
% Sangwine S. J. and Le Bihan N.
% Quaternion Singular Value Decomposition based on Bidiagonalization
% to a Real Matrix using Quaternion Householder Transformations
% arXiv:math.NA/0603251 10 March 2006 available at http://www.arxiv.org/
%
% Gene H. Golub and Charles van Loan ‘Matrix Computations‘ 3rd edition
% Johns Hopkins University Press 1996 section 5.1.4. ISBN 0-8018-5414-8.
% (This describes how to implement a Householder transformation without an
% explicit Householder matrix.)

[r c] = size(A);

if prod([r c]) == 1
    error(‘Cannot bidiagonalize a matrix of one element.‘);    
end

if c <= r
    [U B V] = internal_bidiagonalizer(A); % Upper bidiagonal result.
else
    % This requires a lower bidiagonal result. We handle this by operating
    % on the Hermitian transpose of A. The results require some swapping
    % and transposition to get the correct results.
    
    [V B U] = internal_bidiagonalizer(A‘); U = U‘; B = B.‘; V = V‘;
end

B = check(B); % Verify the result and convert to exactly bidiagonal form
              % with a real or complex B.

% -------------------------------------------------------------------------

function [U B V] = internal_bidiagonalizer(A)

[r c] = size(A); assert(c <= r);

% Iterate over the whole matrix dealing with one column and one row on
% each pass through the loop. See Figure 1 in the Applied Mathematics and
% Computation paper cited above for a diagrammatic representation of this
% process.

U = eyeq(r); % Initialise the three matrix results to appropriately sized
B = A;       % quaternion matrices. These are conformant so that U * B * V
V = eyeq(c); % has the same size as A.

for i = 1:c

    % Compute and apply a left Householder transformation to the ith
    % column (part of the column for the second and subsequent columns).
    
    [h zeta] = householder_vector(B(i:end i) eye(r - i + 1 1));

    T = B(i:end i:end); B(i:end i:end) = (1./zeta) .* (T - h * (T‘ * h)‘);
    T = U(i:end  :   ); U(i:end  :   ) = (1./zeta) .* (T - h * (T‘ * h)‘);
    
    if i == c return; end % On the last column we are done since there
                           % is no corresponding row. See Figure 1 in the
                           % Applied Mathematics 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2010-06-24 16:58  quaternion 工具箱\
     目录           0  2010-06-24 16:58  quaternion 工具箱\qtfm\
     目录           0  2010-06-24 16:58  quaternion 工具箱\qtfm\@quaternion\
     文件         386  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\abs.m
     文件         916  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\acos.m
     文件         943  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\acosh.m
     文件        6697  2010-05-11 15:43  quaternion 工具箱\qtfm\@quaternion\adjoint.m
     文件        5303  2010-03-23 14:19  quaternion 工具箱\qtfm\@quaternion\angle.m
     文件         569  2009-12-23 18:21  quaternion 工具箱\qtfm\@quaternion\arrayfun.m
     文件         912  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\asin.m
     文件         939  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\asinh.m
     文件         918  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\atan.m
     文件         945  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\atanh.m
     文件        1532  2009-11-12 19:45  quaternion 工具箱\qtfm\@quaternion\axis.m
     文件        1565  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\blkdiag.m
     文件        2472  2009-03-08 18:12  quaternion 工具箱\qtfm\@quaternion\bsxfun.m
     文件         490  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\cast.m
     文件        2528  2009-02-09 20:58  quaternion 工具箱\qtfm\@quaternion\cat.m
     文件         916  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\cd.m
     文件        6605  2010-05-11 15:43  quaternion 工具箱\qtfm\@quaternion\cdpolar.m
     文件         378  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\ceil.m
     文件        1427  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\change_basis.m
     文件        2730  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\char.m
     文件         650  2009-12-10 17:11  quaternion 工具箱\qtfm\@quaternion\complex.m
     文件        1179  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\conj.m
     文件        8847  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\conv.m
     文件        7751  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\conv2.m
     文件        1001  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\convert.m
     文件         942  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\cos.m
     文件         947  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\cosh.m
     文件         272  2009-02-08 18:35  quaternion 工具箱\qtfm\@quaternion\cross.m
............此处省略525个文件信息

评论

共有 条评论