编译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.dataA.headliners

我是不是用错了importdata函数? importdata 函数是否不适用于已编译的应用程序?


csvreadi 而不是importdata 确实有效,但如上所述,我正在寻找解决方案,我不需要更改长代码中的所有变量。所以输出必须是一个1x1 struct,包含A.dataA.textdataA.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 的区别在哪

Matlab数据导入--importdata和load函数

matlab中的importdata和 load 的区别在哪

matlab中importdata包含空格行

如何用matlab读取txt文件中的数据,并画图

matlab importdata中的colheaders里的数据是啥类型