From: <par...@us...> - 2011-12-02 08:21:45
|
Revision: 9248 http://octave.svn.sourceforge.net/octave/?rev=9248&view=rev Author: paramaniac Date: 2011-12-02 08:21:38 +0000 (Fri, 02 Dec 2011) Log Message: ----------- quaternion_oo: add blkdiag and test Modified Paths: -------------- trunk/octave-forge/extra/quaternion_oo/INDEX trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/diag.m trunk/octave-forge/extra/quaternion_oo/inst/test_quaternion.m Added Paths: ----------- trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/blkdiag.m Modified: trunk/octave-forge/extra/quaternion_oo/INDEX =================================================================== --- trunk/octave-forge/extra/quaternion_oo/INDEX 2011-12-02 07:59:20 UTC (rev 9247) +++ trunk/octave-forge/extra/quaternion_oo/INDEX 2011-12-02 08:21:38 UTC (rev 9248) @@ -5,6 +5,7 @@ rot2q Methods @quaternion/abs + @quaternion/blkdiag @quaternion/cat @quaternion/columns @quaternion/conj Added: trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/blkdiag.m =================================================================== --- trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/blkdiag.m (rev 0) +++ trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/blkdiag.m 2011-12-02 08:21:38 UTC (rev 9248) @@ -0,0 +1,57 @@ +## Copyright (C) 2011 Lukas F. Reichlin +## +## This program is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see <http://www.gnu.org/licenses/>. + +## -*- texinfo -*- +## Block-diagonal concatenation of quaternions. + +## Author: Lukas Reichlin <luk...@gm...> +## Created: December 2011 +## Version: 0.1 + +function q = blkdiag (varargin) + + qstr = cellfun (@quaternion, varargin); # uniformoutput = true ! + + w = blkdiag (qstr.w); + x = blkdiag (qstr.x); + y = blkdiag (qstr.y); + z = blkdiag (qstr.z); + + q = quaternion (w, x, y, z); + +endfunction + + +%!shared C, D +%! Aw = [2, 6; 10, 14]; +%! Ax = [3, 7; 11, 15]; +%! Ay = [4, 8; 12, 16]; +%! Az = [5, 9; 13, 17]; +%! A = quaternion (Aw, Ax, Ay, Az); +%! +%! Bw = [2, 6, 10; 14, 18, 22]; +%! Bx = [3, 7, 11; 15, 19, 23]; +%! By = [4, 8, 12; 16, 20, 24]; +%! Bz = [5, 9, 13; 17, 21, 25]; +%! B = quaternion (Bw, Bx, By, Bz); +%! +%! C = blkdiag (A, B); +%! +%! Dw = blkdiag (Aw, Bw); +%! Dx = blkdiag (Ax, Bx); +%! Dy = blkdiag (Ay, By); +%! Dz = blkdiag (Az, Bz); +%! D = quaternion (Dw, Dx, Dy, Dz); +%!assert (C == D); Modified: trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/diag.m =================================================================== --- trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/diag.m 2011-12-02 07:59:20 UTC (rev 9247) +++ trunk/octave-forge/extra/quaternion_oo/inst/@quaternion/diag.m 2011-12-02 08:21:38 UTC (rev 9248) @@ -50,4 +50,4 @@ %! Y = diag ([4, 4, 4]); %! Z = diag ([5, 5, 5]); %! S = quaternion (W, X, Y, Z); -%!assert (R, S); +%!assert (R == S); Modified: trunk/octave-forge/extra/quaternion_oo/inst/test_quaternion.m =================================================================== --- trunk/octave-forge/extra/quaternion_oo/inst/test_quaternion.m 2011-12-02 07:59:20 UTC (rev 9247) +++ trunk/octave-forge/extra/quaternion_oo/inst/test_quaternion.m 2011-12-02 08:21:38 UTC (rev 9248) @@ -1,2 +1,3 @@ +test @quaternion/blkdiag test @quaternion/diag test @quaternion/dot \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |