mni2tal.m

来自「toolbox of BVQX, This is the access betw」· M 代码 · 共 77 行

M
77
字号
function talout = mni2tal(mniin, rounded)
% mni2tal  - converts coordinates from MNI brain to best Talairach guess
%
% FORMAT:       talout = mni2tal(mniin [, rounded])
%
% Input fields:
%
%       mniin       N-by-3 or 3-by-N matrix of coordinates
%       rounded     1x1 double, if given, coordinates are rounded to
%                   specified number of digits
%
% Output fields:
%
%       talout      is the coordinate matrix with Talairach points
%
% (c) Matthew Brett 10/8/99
%
% See also spm_matrix

% Version:  v0.5c
% Build:    6120415
% Date:     Dec-04 2006, 3:15 PM CET
% Author:   Matthew Brett
% URL/Info: http://wiki.brainvoyager.com/BVQXtools

% argument check
if nargin < 1 || ...
    length(size(mniin)) > 2 || ...
   ~isa(mniin, 'double')
    error( ...
        'BVQXtools:BadArgument', ...
        'Bad or missing input argument mniin.' ...
    );
end

dimdim = find(size(mniin) == 3);
if isempty(dimdim)
    error( ...
        'BVQXtools:BadArguments', ...
        'mniin argument must be a N-by-3 or 3-by-N matrix' ...
    );
end

% transpose as needed
if dimdim(1) == 2
    mniin = mniin';
end

% Transformation matrices, different zooms above/below AC
upT   = spm_matrix([0 0 0  0.05 0 0  0.99 0.97 0.92  0 0 0]);
downT = spm_matrix([0 0 0  0.05 0 0  0.99 0.97 0.84  0 0 0]);

% find points below axial AC plane
tmp = mniin(3,:) < 0;  % 1 if below AC

% add 1's for matrix multiplication
talout = [mniin; ones(1, size(mniin, 2))];

% multiply according to above/below axial AC plane
talout(:,  tmp) = downT * talout(:,  tmp);
talout(:, ~tmp) = upT   * talout(:, ~tmp);

% return only 3 coordinate points
talout = talout(1:3, :);

% retranspose to match input
if dimdim(1) == 2
    talout = talout';
end

% round output
if nargin > 1 && ...
    isa(rounded, 'double') && ...
   ~isempty(rounded)
    talout = (1/10^rounded(1)) * round(talout * 10^rounded(1));
end

⌨️ 快捷键说明

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