麻烦编译uigetfile函数和importdata || Matlab

时间:2017-06-22 07:04:00

标签: matlab compiler-errors matlab-compiler

我完成了一个很长的Matlab代码,在Matlab中非常完美。 现在我正在尝试编译应用程序,将其用作其他计算机上的.exe文件。

相关代码:

[FileName,PathName] = uigetfile('*.CSV','Select the data file');
delimiterIn = ',';
headerlinesIn = 11;
A = importdata(FileName,delimiterIn,headerlinesIn); % A becomes a 1x1 struct containing data, textdata and colheaders

代码导入.CSV文件。

uigetfile工作得很好,就像我使用[FileName,PathName]一样。但是在第4行A = importdata(FileName,delimiterIn,headerlinesIn);,代码停止工作,我收到以下错误消息:

  

无法打开文件。

     

错误=> name_of_my_program.m第4行

任何想法如何解决这个问题?我无法在代码中进行太多更改,因为代码中会大量使用变量A.dataA.headliners

我使用importdata功能错了吗? importdata函数不适用于已编译的应用程序吗?

csvread代替importdata确实有效,但如上所述,我正在寻找解决方案,我是不是需要更改长代码中的所有变量。所以输出必须是1x1 struct,其中包含A.dataA.textdataA.colheaders

我在中使用MATLAB R2017a和Appliaction Compiler

1 个答案:

答案 0 :(得分:2)

编译后的应用程序可能与输入文件不在同一文件夹中运行,因此您应该使用fullfile更新代码以生成完整路径文件名:

[FileName,PathName] = uigetfile('*.CSV','Select the data file');
delimiterIn = ',';
headerlinesIn = 11;
if FileName == 0; return; end
Filename = fullfile ( PathName, FileName );
A = importdata(Filename,delimiterIn,headerlinesIn); % A becomes a 1x1 struct containing data, textdata and colheaders