matlab如何跳转程序,如何从Matlab命令提示符关闭一个或所有当前打开的Matlab(* .m)文件?...

正如您所注意到的,较新版本的Matlab不会为编辑器返回相同类型的Java对象.

仍然可以使用与以前相同的命令访问主编辑器服务:

edtSvc = com.mathworks.mlservices.MLEditorServices ; %// get the main editor service ;

但这只返回服务的句柄,而不是单个编辑器.

正如丹尼尔所回答的,你可以从那里关闭全部服务,这将立即关闭所有编辑.您可以使用以下两种方法之一:

edtSvc.getEditorApplication.close ; %// Close all editor windows. Prompt to save if necessary.

edtSvc.getEditorApplication.closeNoPrompt ; %// Close all editor windows, WITHOUT SAVE!!

现在在这个版本中,每个打开的文件实际上是一个编辑器对象的实例.如果要控制单个编辑器选项卡/窗口,可以检索编辑器对象的列表,然后单独应用它们的方法:

edtList = edtSvc.getEditorApplication.getOpenEditors.toArray ; %// get a list of all the opened editor

edtList =

java.lang.Object[]:

[com.mathworks.mde.editor.MatlabEditor]

[com.mathworks.mde.editor.MatlabEditor]

[com.mathworks.mde.editor.MatlabEditor]

这将返回com.mathworks.mde.editor.MatlabEditor对象的向量. (本例中我的编辑器中有3个打开的文件).

从现在开始,这些对象中的每一个都控制一个单独的文件.您可以关闭单个文件,但需要知道要定位的文件是哪个索引.要知道哪一个指向什么,您可以查询getLongName属性:

>> edtList(1).getLongName

ans =

C:\TEMP\StackExchange\Editor_control.m

但是,如果您必须控制单个文件,我发现构建一个具有与文件名对应的字段名称的结构更容易.这可以这样做:

for k=1:length(edtList) ;

[~, fname ]= fileparts( char( edtList(k).getLongName.toString ) ) ;

edt.( fname ) = edtList(k) ;

end

现在我有一个有意义名称的结构(好吧,至少对我来说,你的文件和字段名称当然会有所不同):

>> edt

edt =

Bending_Movie_Time_Lapse: [1x1 com.mathworks.mde.editor.MatlabEditor]

Editor_control: [1x1 com.mathworks.mde.editor.MatlabEditor]

foldfunction_test: [1x1 com.mathworks.mde.editor.MatlabEditor]

所以回到关闭一个单独的文件.这可以使用与之前相同的方法之一轻松完成:

edt.foldfunction_test.close %// close with prompt if necessary

edt.foldfunction_test.closeNoPrompt %// close immediately without save

请注意,在此阶段,您还可以访问编辑器文件的一个很好的方法和属性列表.您可以使用Matlab的自动完成(Tab键)来查看它们.

在Matlab R2013a / Windows 7 64位上完成的示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值