我希望我写的脚本用户能够导航到包含其数据的文件并将数据加载到工作区中。例如,如果csv文件包含两个分别为值1和2的单元格,我希望用户只需选择此文件,这两个值将分配给工作区中的变量。
我看过使用:
filename = uigetfile('*.xlsx','*.csv')
但是这只返回文件的名称。也许我可以构建一个找到所选文件的完整路径,然后以这种方式读取它(使用xlsread或csvread),但我想我可能在这里遗漏了一些东西。似乎应该有一种更直接的方式来做到这一点。
答案 0 :(得分:1)
我相信您正在寻找uiopen()
功能。这个功能将:
打开对话框,选择要加载到工作区的文件。
默认情况下,此功能将显示在文件资源管理器对话框with the filter set to all MATLAB® files (with file extensions *.m, *.mlx, *.mat, *.fig, *.mdl, and *.slx)
中。
但是,您也可以从CSV文件和电子表格等数据文件中导入数据。只需选择(All Files)
字段的Files of Type
选项。
一旦您选择了您感兴趣的数据文件,系统将提示您另一个GUI对象,该对象预览您要加载到MATLAB工作区的数据。如果您对预览中显示的变量格式感到满意,只需点击GUI对象工具箱功能区右侧的绿色复选标记,然后点击所有数据文件&#huzzah&# 39; s内容已加载到单独的变量中(根据各自的标题命名)。
或者,虽然这无疑是一种啰嗦和丑陋的方法,但如果您想使用filename
返回的uigetfile('*.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);