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

📄 fmr_writeanalyzeseries.m

📁 toolbox of BVQX, This is the access between BV and matlab. It will help you to analysis data from BV
💻 M
字号:
function rvalue = fmr_WriteAnalyzeSeries(hfile, pattern, offset, range)
% FMR::WriteAnalyzeSeries  - writes analyze vols for the (entire) TC
%
% FORMAT:       [OK] = fmr.WriteAnalyzeSeries([pattern, offset, range]);
%
% Input fields:
%
%       pattern     analyze filename pattern (default: fmrvol_%03d.vol)
%       offset      first number for output file (default: 1)
%       range       which FMR volumes to write (default: all)
%
% Output fields:
%
%       OK          true if write was successful

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

% argument check
if nargin < 1 || ...
    numel(hfile) ~= 1 || ...
   ~isBVQXfile(hfile, 'fmr')
    error( ...
        'BVQXfile:BadArgument', ...
        'Invalid call to %s.', ...
        mfilename ...
    );
end

% get content
bc = bvqxfile_getcont(hfile.L);

% if slice data not loaded at all?
if isempty(bc.Slice) || ...
   ~isstruct(bc.Slice) || ...
   ~isfield(bc.Slice, 'STCData')
    
    % make sure data is loaded
    try
        fmr_LoadSTC(hfile);
        bc = bvqxcont(ifile).C;
    catch
        error( ...
            'BVQXfile:InternalError', ...
            'Error loading required STC data.' ...
        );
    end
end
try
    if istransio(bc.Slice.STCData)
        bc.Slice.STCData = bc.Slice.STCData(:, :, :, :);
        bvqxfile_setcont(hfile.L, bc);
    end
catch
    error( ...
        'BVQXfile:InternalError', ...
        'Error resolving transio.' ...
    );
end
numvol = bc.NrOfVolumes;

% check further arguments
if nargin < 4 || ...
   ~isa(range, 'double') || ...
    isempty(range) || ...
    any(isinf(range(:)') | isnan(range(:)')) || ...
    any(fix(range(:)') ~= range(:)' | range(:)' < 1 | range(:)' > numvol)
    range = 1:numvol;
end
range = range(:)';
if length(range) == 2
    range = range(1):range(2);
end
if nargin < 3 || ...
   ~isa(offset, 'double') || ...
    numel(offset) ~= 1 || ...
    isinf(offset) || ...
    isnan(offset) || ...
    fix(offset) ~= offset || ...
    offset < 1 || ...
    offset > 9999
    offset = 1;
end
if nargin < 2 || ...
   ~ischar(pattern) || ...
   ~any(pattern(:)' == '%') || ...
    (isempty(strfind(lower(pattern(:)'), '.img')) && ...
     isempty(strfind(lower(pattern(:)'), '.hdr')))
    pattern = sprintf('fmrvol_%%0%dd.img', length(num2str(numvol + offset - 1)));
end
pattern = pattern(:)';

% try to create progress bar
try
    pbar = BVQXprogress;
    BVQXprogress(pbar, 'settitle', 'Writing FMR Analyze series...');
    BVQXprogress(pbar, 0, 'Writing volumes...', 'visible', 1, numel(range));
catch
    pbar = [];
end

% loop over images
for vc = 1:numel(range)
    tname = sprintf(pattern, range(vc) + offset - 1);
    succ = fmr_WriteAnalyzeVol(hfile, range(vc), tname);
    if ~succ
        if ~isempty(pbar)
            closebar(pbar);
        end
        error( ...
            'BVQXfile:InternalError', ...
            'Error writing volume %d to file %s.', ...
            range(vc), tname ...
        );
    end
    if ~isempty(pbar)
        BVQXprogress(pbar, vc, sprintf('Writing volume %d...', vc));
    end
end
if ~isempty(pbar)
    closebar(pbar);
end
rvalue = succ;

⌨️ 快捷键说明

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