老师您好,请问,我用DPARSFA做任务fMRI数据预处理时报错,我是选的模板里面的Task fMRI data preprocessing 这一项,根据我的扫描参数修改了一下,结果报错如下,请问该如何解决?谢谢!!
错误使用 file_array/subsref>subfun (line 80)
在 'file2mat' 的工作进程上引发了 UndefinedFunction 错误。这可能是因为在这些工作进程上无法访问包含 'file2mat' 的文件。使用 addAttachedFiles(pool, files)
指定要附加的必要文件。请参阅 'parallel.Pool/addAttachedFiles'的相关文档以获取更多详细信息。
出错 file_array/subsref (line 60)
t = subfun(sobj,args{:});
出错 nifti/subsref>rec (line 219)
t = subsref(t,subs(2:end));
出错 nifti/subsref (line 45)
varargout = rec(opt,subs);
出错 DPARSFA_run>(parfor body) (line 560)
y_Write4DNIfTI(Nii.dat(:,:,:,AutoDataProcessParameter.RemoveFirstTimePoints+1:end),Nii,DirImg(1).name);
出错 DPARSFA_run (line 528)
parfor i=1:AutoDataProcessParameter.SubjectNum
出错 DPARSFA>pushbuttonRun_Callback (line 1601)
[Error]=DPARSFA_run(handles.Cfg);
出错 gui_mainfcn (line 95)
feval(varargin{:});
出错 DPARSFA (line 33)
gui_mainfcn(gui_State, varargin{:});
原因:
未定义与 'struct' 类型的输入参数相对应的函数 'file2mat'。
Error while evaluating uicontrol Callback
另外,刚用MATLAB打开DPARSFA时,就出现警告:
警告: matlabpool will be removed in a future release.
To query the size of an already started parallel pool, query the 'NumWorkers' property of the pool.
To check if a pool is already started use 'isempty(gcp('nocreate'))'.
然后我在DPARSFA里设置好,点RUN时,也会出现警告:
警告: 文件:DPARSFA_run.m 行:658 列:60
临时变量 SliceOrder 将在 parfor 循环的每个迭代开始时被清除。
循环开始前赋给它的任何值都将丢失。如果在 parfor 循环中为它赋值之前使用 SliceOrder,将发生运行时错误。
请参阅 MATLAB 中的并行循环,“临时变量”。
> In DPARSFA>pushbuttonRun_Callback at 1601
In gui_mainfcn at 95
In DPARSFA at 33
警告: 文件:DPARSFA_run.m 行:930 列:83
临时变量 RefFile 将在 parfor 循环的每个迭代开始时被清除。
循环开始前赋给它的任何值都将丢失。如果在 parfor 循环中为它赋值之前使用 RefFile,将发生运行时错误。
请参阅 MATLAB 中的并行循环,“临时变量”。
> In DPARSFA>pushbuttonRun_Callback at 1601
In gui_mainfcn at 95
In DPARSFA at 33
Hi,
Hi,
There are two things you may check:
1. Update SPM. (升级SPM8)
2. Do not add with subfolders when setting path for REST. (在Matlab中设置REST路径时,不要把子文件夹也添加)。
Best,
Chao-Gan
谢谢严老师
谢谢严老师的回答,但我按照您的说明又做了一次,还是出错。
由于我是用DPARSFA做的任务态的block实验数据预处理,源数据为DICOM格式,做处理时没有把Slice timing这一项选上,就出现了以上错误,后来我就先把DICOM转成NIFTI格式,初始文件夹改为从FunImg开始做,同样没有勾上Slice timing,这样就没有再出错。
Hi,
Hi,
这个看起来比较奇怪。两种情况下软件环境是一样的吗?你的matlab是什么版本?
祝一切顺利!
超赣
严老师好,两种情况我都是用的最新版的MATLAB 2014a
严老师好,两种情况我都是用的最新版的MATLAB 2014a,不过之前我以为是MATLAB版本的问题,换成了2010b,还是出错,后来我就在2010b版本中,先把DICOM转成NIFTI格式,初始文件夹改为从FunImg开始做,同样没有勾上Slice timing,这样就没有再出错。于是我就又换回了2014a,用这种方法也没有再出错。