编译uigetfile函数和importdata的麻烦||Matlab
Posted
技术标签:
【中文标题】编译uigetfile函数和importdata的麻烦||Matlab【英文标题】:Troubles compiling uigetfile function and importdata ||Matlab 【发布时间】:2017-06-22 07:03:59 【问题描述】:我完成了一段很长的 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.data
和 A.headliners
。
我是不是用错了importdata
函数? importdata
函数是否不适用于已编译的应用程序?
csvread
i 而不是importdata
确实有效,但如上所述,我正在寻找解决方案,我不需要更改长代码中的所有变量。所以输出必须是一个1x1 struct
,包含A.data
、A.textdata
和A.colheaders
我使用 MATLAB R2017a 和其中的 Appliaction Compiler
【问题讨论】:
【参考方案1】:编译后的应用程序可能不在与输入文件相同的文件夹中运行,因此您应该更新代码以使用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
【讨论】:
如果您将Filename = fullfile ( Pathname, FileName );
更改为Filename = fullfile ( PathName, FileName );
(路径名中的大字母N),那就完美了!非常感谢
完成! :) 没有发现大写 N... :)以上是关于编译uigetfile函数和importdata的麻烦||Matlab的主要内容,如果未能解决你的问题,请参考以下文章
matlab中的importdata和 load 的区别在哪