⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transformcoords.m

📁 含有多种ICA算法的eeglab工具箱
💻 M
字号:
% transformcoords() - Select nazion and inion in anatomical MRI images.%% Usage:%   mewcoords = transformcoords(coords, rotate, scale, center, reverse);%% Inputs:%   coords    - array of 3-D coordinates (3 by N or N by 3)%   rotate    - [pitch roll yaw] rotate in 3-D using pitch (x plane), %               roll (y plane) and yaw (z plane). An empty array does%               not perform any rotation.%   scale     - [scalex scaley scalez] scale axis. A single numeric%               input scale all the dimentions the same. Default 1%               does not scale.%   center    - [cx cy cz] after rotating and scaling, move the%               coordinate center to [cx cy cz]. Default [0 0 0]%               does not move the center.%   reverse   - [0|1] when set to 1 perform the reverse transformation,%               first moving to the old center, unscaling, and unrotating.%               Default is 0.%% Output:%   newcoords - coordinates after rotating, scaling and recentering%% Author: Arnaud Delorme, Salk, SCCN, UCSD, CA, March 23, 2004%123456789012345678901234567890123456789012345678901234567890123456789012% Copyright (C) 2004 Arnaud Delorme%% 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 2 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, write to the Free Software% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USAfunction coords = transformcoords(coords, rotate, scale, center, reverse);        if nargin < 2        help transformcoords;        return;    end;    if nargin < 3        scale =1;    end;    if nargin < 4        center = [0 0 0];    end;    if nargin < 5        reverse = 0;    end;    if size(coords, 1) ~= 3        coords = coords';        trp    = 1;    else        trp = 0;    end;    if size(coords, 1) ~= 3        error('Number of columns must be 3 for the coordinate input');    end;    if length(rotate) > 0 & length(rotate) ~= 3        error('rotate parameter must have 3 values');    end;        % decode parameters    % -----------------    centx = center(1);    centy = center(2);    centz = center(3);    if length(scale) == 1        scale = [scale scale scale];    end;    scalex = scale(1);    scaley = scale(2);    scalez = scale(3);    if length(rotate) < 3        rotate = [0 0 0]    end;    pitch = rotate(1);    roll  = rotate(2);    yaw   = rotate(3);            if ~reverse        % pitch roll yaw rotation        % -----------------------        % pitch (x-axis); roll = y axis rotation; yaw = z axis        % see http://bishopw.loni.ucla.edu/AIR5/homogenous.html        cp = cos(pitch); sp = sin(pitch);        cr = cos(roll);  sr = sin(roll);        cy = cos(yaw);   sy = sin(yaw);        rot3d = [ cy*cr+sy*sp*sr    sy*cr-cy*sp*sr     cp*sr  ;                  -sy*cp            cy*cp               sp     ;                  sy*sp*cr-cy*sr    -cy*sp*cr-sy*sr     cp*cr  ];        coords = rot3d*coords;                % scaling and centering        % ---------------------        coords(1,:) = coords(1,:)*scalex-centx;        coords(2,:) = coords(2,:)*scaley-centy;        coords(3,:) = coords(3,:)*scalez-centz;    else        % unscaling and uncentering        % -------------------------        coords(1,:) = (coords(1,:)+centx)/scalex;        coords(2,:) = (coords(2,:)+centy)/scaley;        coords(3,:) = (coords(3,:)+centz)/scalez;                % pitch roll yaw rotation        % -----------------------        cp = cos(-pitch); sp = sin(-pitch);        cr = cos(-roll);  sr = sin(-roll);        cy = cos(-yaw);   sy = sin(-yaw);        rot3d = [ cy*cr+sy*sp*sr    sy*cr-cy*sp*sr     cp*sr  ;                  -sy*cp            cy*cp               sp     ;                  sy*sp*cr-cy*sr    -cy*sp*cr-sy*sr     cp*cr  ];        coords = rot3d*coords;    end;        if trp        coords = coords';    end;

⌨️ 快捷键说明

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