File 八度选择一个文件?

File 八度选择一个文件?,file,openfiledialog,octave,File,Openfiledialog,Octave,Octave有让用户选择输入文件的好方法吗?我在Matlab中见过这样的代码,但在倍频程中不起作用 最好使用基于gui的方法,但也可以选择某种命令行。这将是伟大的,如果有一些方法来做到这一点,将在Matlab和倍频程工作 我找到了Matlab,但它在Octave中不起作用,即使在为listdlg函数安装Java包时也是如此。在倍频程中,dir()为您提供: 647x1 struct array containing the fields: name date byt

Octave有让用户选择输入文件的好方法吗?我在Matlab中见过这样的代码,但在倍频程中不起作用

最好使用基于gui的方法,但也可以选择某种命令行。这将是伟大的,如果有一些方法来做到这一点,将在Matlab和倍频程工作

我找到了Matlab,但它在Octave中不起作用,即使在为listdlg函数安装Java包时也是如此。在倍频程中,dir()为您提供:

  647x1 struct array containing the fields:

    name
    date
    bytes
    isdir
    datenum
    statinfo

但我不知道如何将其转换为listdlg期望的字符串数组。

我从未遇到过八度打开的文件对话框。
如果您正在寻找一种基于gui的方法,可能会对您有所帮助。我从未使用过它,因为它似乎只适用于windows计算机


一个可能的解决方案是在octave中编写一个小脚本,允许用户解析目录并选择这样的文件。

我从未在octave中遇到过打开的文件对话框。
如果您正在寻找一种基于gui的方法,可能会对您有所帮助。我从未使用过它,因为它似乎只适用于windows计算机

一个可能的解决方案是用octave编写一个小脚本,允许用户解析目录并选择这样的文件。

您已经安装了,因此可以创建任何java类的实例并调用任何java方法

例如,要创建
JFileChooser
并调用
JFileChooser.showOpenDialog(组件父级)
方法:

frame = javaObject("javax.swing.JFrame");
frame.setBounds(0,0,100,100);
frame.setVisible(true);
fc = javaObject ("javax.swing.JFileChooser")
returnVal = fc.showOpenDialog(frame);
file = fc.getSelectedFile();
file.getName()
顺便说一句,我在安装软件包时遇到了一些麻烦。 这里是Ubuntu的一个例子。这也适用于我的Debian测试

编辑

@NoBugs回复您的评论:

如果需要使用listdlg,可以执行以下操作:

d = dir;
str = {d.name};
[sel,ok] = listdlg('PromptString','Select a file:',...
                'SelectionMode','single',...
                'ListString',str);
if ok == 1
    disp(str{sel(1)});
end
这应该与matlab兼容,因为我现在无法测试它

如果要选择多个文件,请使用以下选项:

d = dir;
str = {d.name};
[sel,ok] = listdlg('PromptString','Select a file:',...
                'SelectionMode','multiple',...
                'ListString',str);
if ok == 1
   imax = length(sel);
   for i=1:1:imax
      disp(str{sel(i)});
   end
end
您已经安装了,因此可以创建任何java类的实例并调用任何java方法

例如,要创建
JFileChooser
并调用
JFileChooser.showOpenDialog(组件父级)
方法:

frame = javaObject("javax.swing.JFrame");
frame.setBounds(0,0,100,100);
frame.setVisible(true);
fc = javaObject ("javax.swing.JFileChooser")
returnVal = fc.showOpenDialog(frame);
file = fc.getSelectedFile();
file.getName()
顺便说一句,我在安装软件包时遇到了一些麻烦。 这里是Ubuntu的一个例子。这也适用于我的Debian测试

编辑

@NoBugs回复您的评论:

如果需要使用listdlg,可以执行以下操作:

d = dir;
str = {d.name};
[sel,ok] = listdlg('PromptString','Select a file:',...
                'SelectionMode','single',...
                'ListString',str);
if ok == 1
    disp(str{sel(1)});
end
这应该与matlab兼容,因为我现在无法测试它

如果要选择多个文件,请使用以下选项:

d = dir;
str = {d.name};
[sel,ok] = listdlg('PromptString','Select a file:',...
                'SelectionMode','multiple',...
                'ListString',str);
if ok == 1
   imax = length(sel);
   for i=1:1:imax
      disp(str{sel(i)});
   end
end

我想我会为这个老问题提供一个更新的答案,因为它出现在其他问题的“相关问题”字段中


Octave提供了
uigetdir
uigetfile
函数,它们可以实现您所期望的功能。

我想我应该为这个旧问题提供一个更新的答案,因为它出现在其他问题的“相关问题”字段中


Octave提供了
uigetdir
uigetfile
函数,它们可以实现您所期望的功能。

在基于GUI的方法中“好”与在基于GUI的方法中“好”?如果您安装Octaveforge Java包,Matlab可以使用Listdlg提示输入文件:,Octave还具有Listdlg。但是,我无法使用Matlab示例代码让它提示输入文件。如果安装Octaveforge Java包,Matlab可以使用Listdlg提示输入文件:,Octave也有Listdlg。然而,我还不能用Matlab示例代码让它提示输入一个文件。很棒的代码!在Ubuntu和编译的Octave 3.4.2上,即使没有那个补丁,它对我来说也很好。然而,我正在寻找类似于链接的Matlab代码的代码,要求用户使用listdlg在当前目录中选择一个文件。兼容性,或与Matlab的最小差异,将是一个巨大的优势。伟大的代码!在Ubuntu和编译的Octave 3.4.2上,即使没有那个补丁,它对我来说也很好。然而,我正在寻找类似于链接的Matlab代码的代码,要求用户使用listdlg在当前目录中选择一个文件。兼容性,或与Matlab的最小差异,将是一个很大的优势。