Skip to content

uigetfile: file does not exist

四月 22, 2008

近日遇到的一个Ubuntu(linux)下的Matlab的一个bug的解决方法……记录备用

调用图形界面打开文件的函数uigetfile打开文件时弹出对话框报错。
My environment: Ubuntu 7.10, Matlab R14SP1.

The bug: run uigetfile, click on a file, click open, get a
"file does not exist" error dialog box, and uigetfile returns 0,
instead of the file name.

搜了下MATLAB Support,看来不只我一个人这样子,这个问题似乎只出现在非英语编码的linux系统中。不过,即使打开的确实是英文名的 ascii文件,也会出现这个问题。

Matlab官方似乎是没有令人满意的答案。不过网友们找到了一些workarounds,虽然不能完美的解决问题罢:

1.type in the filename (instead of select one and click "open" button),笨办法,不过有效……似乎是linux的native gui不能将文件名传给uigetfile

2.更改语言变量
  For csh variants:
   % ( unsetenv LANG ; /the path of your matlab/matlab ) &
  For Bourne-shell variants:
    $ ( unset LANG ; /the path of your matlab/matlab ) &
这似乎会把你的matlab变成英文的,从而解决了问题。但是这样你的matlab似乎就不能访问任何中文路径的文件了……中文也会显示乱码

3.在你的运行含有uigetfile的脚本之前加入一行代码:
>setappdata(0,’UseNativeSystemDialogs’,0)
这样会把linux的native gui关闭而采用matlab自己的Java gui(整个软件界面都会改变!),当然,实际上看起来会漂亮一些,也不会再有bug,不过需要java支持(废话),而且响应变慢(是精神作用么?)。
Note to self: 也许,如果你愿意的话,可以把这代码在matlab启动时自动运行。

See:
MATLAB support: http://www.mathworks.com/support/
MATLAB file exchange: http://www.mathworks.com/matlabcentral/fileexchange
MATLAB FAQ: http://www.mit.edu/~pwb/cssm/

Technorati Tags: ,,
Advertisements
No comments yet

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: