编译MATLAB错误:未定义的函数'ft_datatype_sens'输入参数的类型'结构'

问题描述:

我有一个MATLAB程序由我的用户之一写的使用SPM8工具箱。如果直接运行,它工作正常。然而,编译并运行时,会出现以下错误:编译MATLAB错误:未定义的函数'ft_datatype_sens'输入参数的类型'结构'

Undefined function 'ft_datatype_sens' for input arguments of type 'struct' 

此功能来源于实地考察工具箱,这是捆绑在一起的SPM8工具箱。该startup.m包含以下内容:

if(isdeployed==false) 
    addpath(genpath('/cm/shared/apps/matlab/spm/08')) 
    spm('defaults', 'eeg') 
    spm_get_defaults('cmdline',true) 
    disp('SPM path is set') 
end 

并非是一个MATLAB用户自己,我在黑暗中摸索,但我的假设是,实地考察工具箱没有被发现。

任何人都可以对此有所了解吗?

+0

编译的应用程序不支持更改路径。如果您正在编译程序,请尝试使用mcc的“-C”标志来检查生成的包文件,使用zip实用程序检查存在的文件。 – Navan

+0

感谢您的提示。包确实包含文件'ft_datatype_sens.m' ,所以看起来没问题,但是,我不明白“改变路径”的含义,不是我编译之前设置的路径,而是编译到独立二进制文件中,或者我应该移动外部工具箱进入MATLAB安装的'工具箱'目录? – loris

+0

如果文件存在并且在编译之前添加了路径,它应该可以工作,不知道还有什么会导致错误,我会先简单地调用工具箱来检查它是否正确是用于这个功能还是整个工具箱。 – Navan

的解决方案是必要的目录需要通过选项-I明确给出:

mcc -C -mv -R -singleCompThread -R -nodisplay -I /cm/shared/apps/matlab/spm/08/ -I /cm/shared/apps/matlab/spm/08/spm_orthviews -I /cm/shared/apps/matlab/spm/08/config -I /cm/shared/apps/matlab/spm/08/matlabbatch -I /cm/shared/apps/matlab/spm/08/matlabbatch/cfg_confgui -I /cm/shared/apps/matlab/spm/08/matlabbatch/cfg_basicio -I /cm/shared/apps/matlab/spm/08/matlabbatch/cfg_basicio/src -I /cm/shared/apps/matlab/spm/08/matlabbatch/examples -I /cm/shared/apps/matlab/spm/08/src -I /cm/shared/apps/matlab/spm/08/toolbox -I /cm/shared/apps/matlab/spm/08/toolbox/mixture -I /cm/shared/apps/matlab/spm/08/toolbox/spectral -I /cm/shared/apps/matlab/spm/08/toolbox/Seg -I /cm/shared/apps/matlab/spm/08/toolbox/Beamforming -I /cm/shared/apps/matlab/spm/08/toolbox/DEM -I /cm/shared/apps/matlab/spm/08/toolbox/DARTEL -I /cm/shared/apps/matlab/spm/08/toolbox/MEEGtools -I /cm/shared/apps/matlab/spm/08/toolbox/Neural_Models -I /cm/shared/apps/matlab/spm/08/toolbox/dcm_meeg -I /cm/shared/apps/matlab/spm/08/toolbox/SRender -I /cm/shared/apps/matlab/spm/08/toolbox/Shoot -I /cm/shared/apps/matlab/spm/08/toolbox/HDW -I /cm/shared/apps/matlab/spm/08/toolbox/FieldMap -I /cm/shared/apps/matlab/spm/08/EEGtemplates -I /cm/shared/apps/matlab/spm/08/canonical -I /cm/shared/apps/matlab/spm/08/rend -I /cm/shared/apps/matlab/spm/08/apriori -I /cm/shared/apps/matlab/spm/08/templates -I /cm/shared/apps/matlab/spm/08/external -I /cm/shared/apps/matlab/spm/08/external/fieldtrip -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/plotting -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/fileio -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/statfun -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/src -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/connectivity -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/inverse -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/specest -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/forward -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/utilities -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/preproc -I /cm/shared/apps/matlab/spm/08/external/fieldtrip/trialfun -I /cm/shared/apps/matlab/spm/08/external/yokogawa -I /cm/shared/apps/matlab/spm/08/external/eeprobe -I /cm/shared/apps/matlab/spm/08/external/mne -I /cm/shared/apps/matlab/spm/08/external/ctf -I /cm/shared/apps/matlab/spm/08/external/bemcp -I /cm/shared/apps/matlab/spm/08/tpm myprog.m 

这可能是能够减少需要通过选项-a,指定目录的数量,其可以递归地添加目录。