我想启动matlab并将matlab窗口的标题替换为进程id。所以我创建了以下startup.m文件:
cd E:\matlab_files\
jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
jDesktop.getMainFrame.setTitle(['PID:' num2str(feature('getpid'))]);
现在,matlab将文件夹更改为E:\ matlab_files,但不替换进程ID。一旦matlab启动并执行startup.m的第2行和第3行,那么matlab窗口的标题将被进程ID替换。
请解释此行为的原因。
我正在使用Matlab 2009b。
答案 0 :(得分:3)
所有图片尚未完成初始化 - >所以你无法替换标题(我认为它还没有被创建)。
您可以尝试将jDesktop.getMainFrame.getTitle
发送到startup.m
,然后您会看到它是空的。
解释为什么 - 你还没有要求修复 - 但我想你想要一个! ;)
你可以通过使用计时器来解决这个问题 - 注意我在下面的计时器中放了60秒 - 但它可能要少得多。
function startup
if ~isdeployed % its agood practice to use this incase you ever compile your codes.
cd E:\matlab_files\
timerFcn = @updatetitle;
tfcn = timer('StartDelay', 60, 'TimerFcn', timerFcn );
start(tfcn)
end
end
function updatetitle(varargin)
jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
jDesktop.getMainFrame.setTitle(['PID:' num2str(feature('getpid'))]);
end
答案 1 :(得分:0)
我观察到同样的行为。请注意,在MATLAB仍在启动时,startup.m是从matlabrc.m运行的。您可以通过将代码放在matlabrc.m中进行实验,但我不建议您编辑该文件。
有几个可能的原因: