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

📄 bvqx_dtsf_parsefibers.m

📁 toolbox of BVQX, This is the access between BV and matlab. It will help you to analysis data from BV
💻 M
字号:
function fibers = bvqx_dtsf_parsefibers(fid, numfib)
% bvqx_dtsf_parsefibers  - parse fibers from DTSF file
%
% FORMAT:       fibers = bvqx_dtsf_parsefibers(fid, numfib)
%
% Input fields:
%
%       fid         input file fid (fopen)
%       numfib      number of fibers
%
% Output fields
%
%       fibers      Nx1 struct array with fields
%        .NrOfPoints   number of points for that fiber
%        .Selected     uint8, either 0 or 1
%        .RGB          1x3 uint8 array
%        .FromToPoint  1x2 double array, [0, NrOfPoints]
%        .Coord        Px3 coordinates of fiber points
%
% See also BVQXfile, bffio

% Version:  v0.7b
% Build:    7083015
% Date:     Aug-30 2007, 3:21 PM CEST
% Author:   Jochen Weber, Brain Innovation, B.V., Maastricht, NL
% URL/Info: http://wiki.brainvoyager.com/BVQXtools

% argument check
if nargin < 2 || ...
   ~isa(fid, 'double') || ...
    isempty(fid) || ...
   ~isreal(fid) || ...
   ~any(fopen('all') == fid(1)) || ...
   ~isa(numfib, 'double') || ...
    numel(numfib) ~= 1 || ...
   ~isreal(numfib) || ...
    isnan(numfib) || ...
    isinf(numfib) || ...
    numfib < 0
    error( ...
        'BVQXtools:BadArgument', ...
        'Bad or missing argument.' ...
    );
end

% build structure first, so we don't need growing it later!
fibers = struct;
fibers.NrOfPoints  = 1;
fibers.Selected    = 0;
fibers.RGB         = [0, 0, 0];
fibers.FromToPoint = [0, 1];
fibers.Coord       = [0, 0, 0];
if numfib < 1
    fibers(:) = [];
    return;
end
fibers(2:numfib) = fibers;

% grand TRY loop
try

    % loop over fibers
    for fc = 1:numfib

        % get number of points
        numpts = fread(fid, [1, 1], 'uint32=>double');
        fibers(fc).NrOfPoints  = numpts;
        fibers(fc).Selected    = fread(fid, [1, 1], '*uint8');
        fibers(fc).RGB         = fread(fid, [1, 3], '*uint8');
        fibers(fc).FromToPoint = fread(fid, [1, 2], 'uint32=>double');
        fibers(fc).Coord       = fread(fid, [3, numpts], 'single=>double')';
    end

catch
    error( ...
        'BVQXtools:BadFileOrContent', ...
        'Reading of file failed with: ''%s''.', ...
        lasterr ...
    );
end

⌨️ 快捷键说明

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