在打包应用程序访问文件
除了MATLAB®脚本文件,您可以添加其他类型的文件来部署档案等数据文件、dll和文件从其他编程语言。访问其他文件从您的部署代码通过使用哪一个
函数或引用文件位置相对于部署归档文件的根ctfroot
。
更多信息可部署的档案,知道了关于部署归档文件。
包括部署归档文件
MATLAB编译器™使用依赖项分析功能来确定必要的文件的列表包括在生成的包。有关详细信息,请参见使用MATLAB编译器依赖分析。
您可以包括其他文件在部署存档使用——一个
国旗的世纪挑战集团
命令或“AdditionalFiles”
选择使用compiler.build
功能,如compiler.build.standaloneApplication
。
或者,您可以将文件添加到文件为您的终端用户安装在一个部分deploytool
应用,使他们出现在相同的目录中安装后执行。
明确地包含了MATLAB数据文件使用% #函数编译指示
编译器不包括MATLAB数据文件(mat文件)默认从依赖性分析。如果你想要编译器MAT-file中显式地检查数据,指定% #函数
当编写MATLAB代码编译指示。
例如,如果您想包括依赖ClassificationSVM
从MAT-file类加载,使用% #函数
编译指示。
函数喷火% #函数ClassificationSVM负载(“svm-classifier.mat”);num_dimensions = (svm_model大小。PredictorNames, 2);结束%函数foo
包括mex files, dll或共享库
当你编译MATLAB函数包含mex files,确保依赖分析仪能够找到他们。特别注意:
因为依赖分析仪不能检查mex files, dll,或共享库,以确定他们的依赖性,显式地包含所有这些文件可执行文件要求。
如果你有任何怀疑的依赖分析仪可以找到一个调用MATLAB函数MEX-file, DLL,或共享库,那么手动包含这个函数。
不是所有的功能都与编译器兼容。检查文件
mccExcludedFiles.log
在构建完成。这个文件列出了所有功能从应用程序调用,不能部署。
从部署访问文件的功能
从部署MATLAB代码来访问文件,检查代码是否运行在部署模式使用isdeployed
。然后,通过使用定位文件哪一个
相对于函数或通过指定文件的位置ctfroot
。
使用哪一个
函数
最简单的方法来获取一个文件的路径是通过使用来定位文件哪一个
函数。
如果(fullfile isdeployed locate_externapp = (“extern_app.exe”));结束
哪一个
函数的作用是:返回文件路径extern_app.exe
如果它是位于部署归档文件。
指定文件位置ctfroot
当你包含文件在一个文件夹除了当前的MATLAB的工作目录,部分文件路径保存在可部署归档文件相对于ctfroot
。
MATLAB文件在当前工作目录或者子文件夹保留当前文件夹的相对路径的文件。
例如,如果在MATLAB的文件夹打开包装
D: \ \ \ MyProj工作文档
,那么该文件D: \ \ \ MyProj \ exfiles \ data1.mat工作文档
将位于
在部署归档文件ctfroot
\mfilename
\ exfiles \ data1.matmfilename
是主要的MATLAB脚本文件的名称。当前文件夹以外的文件保留完整的从磁盘驱动器的根文件夹结构。
例如,该文件
C:\Users\mwuser\Documents\External\externdata\ extern_app.exe
将位于
在部署归档文件。ctfroot
\ \ mwuser \ \用户文档外部\ externdata \ extern_app.exe
使用fullfile
函数来确保文件路径分隔符为您的系统使用正确的文件。
如果isdeployed locate_data1 = fullfile (ctfroot,“exfiles”,“data1.mat”));locate_data2 = fullfile (ctfroot,“用户”,“mwuser”,“文件”,…“外部”,“externdata”,“extern_app.exe”));结束
示例处理MATLAB部署的应用程序的数据
这个例子展示了如何在打包应用软件包括数据文件和使用负载
和保存
函数来操纵MATLAB数据。
在MATLAB中导航到你的工作文件夹。对于这个示例,工作文件夹
C:\Users\mwuser\Documents\Work\exfiles
。复制
Data_Handling
和externdata
文件夹与MATLAB船你的工作文件夹。拷贝文件(fullfile (matlabroot,“外来的”,“例子”,编译器的,“Data_Handling”),“Data_Handling”);拷贝文件(fullfile (matlabroot,“外来的”,“例子”,编译器的,“externdata”),“externdata”);
在MATLAB命令提示符并导航到新的
Data_Handling
文件夹在你的工作文件夹。检查
ex_loadsave.m
。的
ex_loadsave
脚本加载三MATLAB数据文件,每个客户都在不同的文件夹:user_data.mat
——在当前文件夹用户数据\ extra_data.mat
——在当前文件夹的子文件夹. . \ externdata \ extern_data.mat
——在当前文件夹
创建一个列表的单元阵列的数据文件。
datafiles = {“user_data.mat”,”。/用户数据/ extra_data.mat”,“. . / externdata / extern_data.mat”};
编译
ex_loadsave.m
使用compiler.build.standaloneApplication
函数。compiler.build.standaloneApplication (“ex_loadsave.m”,“AdditionalFiles”数据文件来完成)
运行编译后的应用程序。
! ex_loadsavestandaloneApplication \ ex_loadsave.exe
加载:C:\Users\mwuser\AppData\Local\Temp\mwuser\ mcrCache9.13 \ ex_loa0 \ ex_loadsave \ user_data。垫一个= 21.4669 15.7255 15.6930 11.8122 19.6691 17.0570 17.4689 22.2803 20.3894 17.2548 17.3474 17.7316 19.3062 15.1321 16.0573 25.4584加载B: C:\Users\mwuser\AppData\Local\Temp\mwuser\ mcrCache9.13 \ ex_loa0 \ ex_loadsave \用户数据\ extra_data。垫B = 15.3970 20.5682 13.8388 26.5186 14.2255 24.6506 18.9545 24.8117 14.9904 22.8211 16.4942 25.3533 13.1022 26.0567 21.2197 24.8940走读生数据加载:C:\Users\mwuser\AppData\Local\Temp\mwuser\ mcrCache9.13 \ ex_loa0 \ \ mwuser \用户文档\ \ exfiles \ externdata \ extern_data工作。垫ext_data = 27.6923 69.4829 43.8744 18.6873 4.6171 31.7099 38.1558 48.9764 9.7132 95.0222 76.5517 44.5586 82.3458 3.4446 79.5200 64.6313 * B = 1.0 e + 03 * 0.9442 1.4951 1.1046 1.6514 1.0993 1.8042 1.3564 1.9424 1.0518 1.7026 1.2716 1.8500 1.0868 1.7999 1.3591 1.9283 A * B的结果保存到:C:\Users\mwuser\Documents\Work\exfiles\ Data_Handling \ \ saved_data.mat输出
比较结果的输出
ex_loadsave.m
。