资源简介
本文件包含了四元数理论中的所有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个文件信息
- 上一篇:MATLAB 对iris数据集进行PCA
- 下一篇:区域合并msrm算法
相关资源
- 四元数(quaternion)的Matlab工具箱
- 二 元与四元数字信号统计检测
- 四元数matlab工具箱2.6版
-
姿态四元数解算simuli
nk模块 - 基于对偶四元数航天器姿轨耦合一体
- 捷联惯导解算程序四元数法
- 四元数法计算两个物体之间的相对位
- 四元数MATLAB相关计算
- 欧拉角/四元数转化为机器手坐标系描
- 关于四元数法捷联惯导解算算法的m
- 垂直发射弹道仿真程序(采用四元数
- 四元数与姿态角转换matlab程序
- 用四元数法的捷联惯性导航姿态解算
- 利用四元数对彩色图像作图像处理
- 四元数分解的点云配准
- matlab四元数计算各个时刻的姿态数据
- Matlab_source_for_edge_detector_using_quaterni
- 四元数转欧拉角matlab
评论
共有 条评论