2011-09-17 8 views
1

Octaveは、ユーザーに入力ファイルを選択させる良い方法がありますか?私はこのようなMatlabのコードを見たことがありますが、Octaveでは動作しません。Octaveファイルを選択しますか?

guiベースの方法が推奨されますが、何らかのコマンドラインの選択も可能です。 MatlabとOctaveの両方で動作する方法があれば素晴らしいことでしょう。

Matlabにはthisが見つかりましたが、リストパッケージ機能をインストールする場合は、Octave Forge Javaパッケージをインストールしても、Octaveでは機能しません。オクターブで、DIRは()あなたに与えます:

647x1 struct array containing the fields: 

    name 
    date 
    bytes 
    isdir 
    datenum 
    statinfo 

が、私は期待しLISTDLG文字列の配列にこれを変換する方法を知りません。

+0

「良いですか」? – Sriram

答えて

1

すでにOctave Forge java packageがインストールされているため、任意のJavaクラスのインスタンスを作成して、任意のJavaメソッドを呼び出すことができます。ところで

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() 

JFileChooserを作成し、JFileChooser.showOpenDialog(Component parent)メソッドを呼び出すために例えば

。私はパッケージをインストールする際にいくつか問題がありました。 ここにはUbuntu用のfixがあります。私のDebianテストでもうまくいきました。

EDITあなたのコメントへの返信で

@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と互換性があります私は今それをテストすることはできません。

あなたは、複数のファイルを選択したい場合は、この使用:GUIベースの方法のように

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 
+0

すばらしいコード! UbuntuとコンパイルされたOctave 3.4.2を使っていても、うまくいきました。しかし、私はリンクされたMatlabコードに相当するコードを探していました。ユーザーにlistdlgを使って現在のディレクトリにあるファイルを選択するよう求めました。互換性、またはMatlabとの最小限の相違点は大きなプラスになります。 – NoBugs

+0

それはMatlabでうまくいく、素晴らしい! – NoBugs

0

私はオクターブで開いたファイルダイアログを見たことがありません。
guiベースの方法をお探しの場合は、多分guioctaveがお手伝いします。私はそれを使用したことはありません、それはWindowsマシンでのみ利用できるように見えるためです。

可能な解決策は、ユーザーがディレクトリを解析してそのようなファイルを選択できるように、オクターブ単位の小さなスクリプトを書くことです。

+0

MatlabはListdlgを使用してファイルを要求することができます:http://www.mathworks.com/help/techdoc/ref/listdlg.html Octaveforge Javaパッケージをインストールする場合、OctaveにもListdlgがあります。しかし、Matlabのサンプルコードを使用してファイルを要求することはできませんでした。 – NoBugs

関連する問題