2017-02-28 88 views
0

我想一个剧本我写要能够浏览到包含他们的数据文件,将数据加载到工作区的用户。例如,如果一个CSV文件包含两个小区中的值1和2分别,我希望用户简单地选择该文件和这两个值将被分配到工作区中的一个变量。如何提示用户选择将在matlab中加载的文件?

我已经看过用:

filename = uigetfile('*.xlsx','*.csv') 

但是,这只是返回的文件名。也许我可以构建一个完整路径,他们选择找到该文件,然后(使用xlsread或csvread)以这种方式读它,但我想我可能失去了一些东西在这里。似乎应该有一个更直接的方式来做到这一点。

回答

1

我相信你正在寻找的uiopen()功能。此功能将:

打开用于选择要加载到工作区的文件的对话框。

默认情况下,此功能将显示在文件资源管理器对话框with the filter set to all MATLAB® files (with file extensions *.m, *.mlx, *.mat, *.fig, *.mdl, and *.slx)中。

但是,您也可以从CSV文件和电子表格等数据文件导入数据。只需为Files of Type字段选择(All Files)选项。

一旦您选择了您感兴趣的数据文件,系统会提示您另一个GUI对象,该对象预览您将要加载到MATLAB工作区中的数据。如果您对预览中显示的变量格式感到满意,只需点击GUI对象中工具箱功能区右侧的绿色复选标记,然后点击数据文件的所有内容加载到单独的变量(根据它们各自的头文件命名)。

另外,虽然这无疑是一个较长的啰嗦和丑陋的方式,如果你想使用filenameuigetfile('*.xlsx', '*.csv')回来,你可以使用importdata()功能。这将输出一个struct,其中包含数据文件中的每个变量作为单独的字段:

[filename, pathname] = uigetfile(... 
    {'*.csv;', 'CSV file (*.csv)'; 
    '*.xlsx', 'Excel Spreadsheet file (*.xlsx)'; ... 
    '*.*', 'All Files (*.*)'}, 'Pick a File to Import'); 
full_filename = fullfile(pathname, filename); 
[A, delimiterOut] = importdata(full_filename); 
相关问题