Matlab GUI - 文件读取

目录

  • uigetifile文件读取
  • 路径显示


uigetifile文件读取

参考Matlab论坛 用户js4624331


matlab编程中有时想调入电脑中的某个文件,现找到了一些关于uigetifile用法~~
[filename, pathname] = uigetfile( ...
    {'*.jpg;*.tif;*.png;*.gif','All Image Files';...
    '*.*','All Files' },...
    '请选择要修改的图片(可多选)', ...
    'MultiSelect', 'on');

此函数的用法为
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)
FileName:返回的文件名
PathName:返回的文件的路径名
FilterIndex:选择的文件类型
FilterSpec:文件类型设置
DialogTitle:打开对话框的标题
DefaultName:默认指向的文件名

例子:(接来自matlab的帮助)
1.最简单的形式,只设置了一种可选择的文件类型
[FileName,PathName] = uigetfile('*.m','Select the M-file');
2.设置多种文件类型
[filename, pathname] = ...
     uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');
3.可以为文件类型设置说明,注意书写格式
[filename, pathname] = uigetfile( ...
{'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)';
   '*.m',  'M-files (*.m)'; ...
   '*.fig','Figures (*.fig)'; ...
   '*.mat','MAT-files (*.mat)'; ...
   '*.mdl','Models (*.mdl)'; ...
   '*.*',  'All Files (*.*)'}, ...
   'Pick a file');
4.可返回选择的文件类型序号,并且可以设置文件多选,设置文件多选时注意,当只选了一个文件时,返回的filename为字符串,选择多个文件时,返回的元胞类型。
[filename, pathname, filterindex] = uigetfile( ...
{  '*.mat','MAT-files (*.mat)'; ...
   '*.mdl','Models (*.mdl)'; ...
   '*.*',  'All Files (*.*)'}, ...
   'Pick a file', ...
   'MultiSelect', 'on');
5.可以设置默认文件名
uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
          '*.*','All Files' },'mytitle',...
          'C:\Work\myfile.jpg')
更多文件对话框,可参考matlab帮助。

一点小技巧:当返回了一个文件的时候,可以用fullfile将路径和文件名组合起来,如
[filename, pathname] = uigetfile('*.m', 'Pick an M-file');
if isequal(filename,0)
   disp('User selected Cancel')
else
   disp(['User selected', fullfile(pathname, filename)])
end
fullfile的用法如下
f = fullfile('C:', 'Applications', 'matlab', 'myfun.m')
f = C:\Applications\matlab\myfun.m

路径显示

这里遇到了一个坑:

% Button pushed function: Button
        function ButtonPushed(app, event)
            [filename,pathname] = uigetfile({'*.xlsx'});
            if ~isequal(filename,0)
                app.TextArea.Value = fullfile(pathname,filename);
                %app.EditField_3.Value = fullfile(pathname,filename);
            end
        end

在回调函数中,将文件路径赋值给 app.TextArea.Value,在后面调用此Value的时候一直报错

错误使用 xlsread (line 129)
文件名必须为字符串或字符向量。

花了半天时间找到根本原因:

app.TextArea.Value = 'Hello Matlab';

像上面这样直接给TextArea赋值,每次赋值都会消除先前的信息,然后显示新的信息。以为Value中存的是字符串,其实并不是。
(具体请参考 我是麻瓜喔 的解释)

但其实解决也很简单,改用 app.EditField 组件即可

你可能感兴趣的:(GUI,matlab,开发语言)