matlab怎么没有编辑器,在不打开编辑器窗口的情况下开始一个新的MATLAB会话

本文探讨了MATLAB编辑器如何保存文件及其显示参数,并解释了当选择不记住文件时,如何通过清理MATLABDesktop.xml文件来解决由此产生的问题。提供了清理脚本以避免重启时的状态丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是因为,当MATLAB打开时,它会跟踪加载到编辑器中的文件以及每个文件的显示参数。这些信息存储在以下位置。

fullfile(prefdir, 'MATLABDesktop.xml')

没有为你当前在活跃MATLAB编辑器中打开每个文件的条目。

当您在重新启动时选择不记住文件的首选项时,会导致应用程序退出时从该文件中删除所有这些条目。

当你有多个同时运行的MATLAB实例(同一版本)时,它们都依赖于同一个文件。所以当你用一个实例打开一个文件时,然后启动一个新实例,新实例加载该文件并从中填充编辑器状态。

至于修复这种行为,我认为这可能是困难的。您可以也许编辑您的startup.m文件以从MATLABDesktop.xml文件中删除所有这些条目。即使如此,我不确定这会如何影响其他正在运行的实例的稳定性。

脚本执行此清洁

如果你想有一个脚本这是能够做到这一点,同时保留存在的配置文件中的所有其他设置,下面应该工作。

filename = fullfile(prefdir, 'MATLABDesktop.xml');

xml = xmlread(filename);

% Find ALL entries in the file and determine "Class" attribute

clients = xml.getElementsByTagName('Client');

clients = arrayfun(@(x)clients.item(x-1), 1:clients.getLength, 'uni', 0);

classes = cellfun(@(x)char(x.getAttribute('Class')), clients, 'uni', 0);

% Find all EditorViewClient entries

func = @(x)isempty(regexp(x, '\.EditorViewClient$', 'once'));

toremove = ~cellfun(func, classes);

clients = clients(toremove);

% Remove all client entries that need to be removed

for k = 1:numel(clients)

parent = clients{k}.getParentNode();

parent.removeChild(clients{k});

end

% Write the remaining data back to the file

xmlwrite(filename, xml);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值