如何在MATLAB中检索所选文本?

时间:2010-08-20 16:55:30

标签: matlab selection

MATLAB具有多种选择敏感功能。例如,如果您选择一些文本并按F9,它将评估您的选择。 (除非您重新设置了键盘设置。)

我希望能够通过快捷方式复制此功能。因此,例如,我想单击显示当前选择的快捷方式。我的快捷方式回调是disp(GetSelection())

GetSelection会怎样?

3 个答案:

答案 0 :(得分:5)

感谢@Yair Altmanundocumented Matlab,我能够找出使其发挥作用的java命令。

将它放在快捷方式(或快捷方式调用的函数)中:

%# find the text area in the command window
jDesktop = com.mathworks.mde.desk.MLDesktop.getInstance;
try
  cmdWin = jDesktop.getClient('Command Window');
  jTextArea = cmdWin.getComponent(0).getViewport.getComponent(0);
catch
  commandwindow;
  jTextArea = jDesktop.getMainFrame.getFocusOwner;
end

%# read the current selection
jTxt = jTextArea.getSelectedText;

%# turn into Matlab text
currentSelection = jTxt.toCharArray'; %'

%# display
disp(currentSelection)

答案 1 :(得分:0)

我不相信有任何方法可以控制或从Matlab文本编辑器中读取选择,Mathworks网站上没有提到这样的API(至少在Google上快速搜索)。如果您希望此功能启用更高级的文本编辑,那么您可能需要考虑将.m文件编辑器设置为外部编辑器(http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_env/brxijcd.html)。可以从自定义GUI中的UIcontrol中读取选择,但我认为这不是您想要的。

答案 2 :(得分:0)

如果您想使用类似的内容,但在编辑器中而不是在命令窗口中突出显示文本。

我使用以下代码以便能够快速检查变量的nnz(),尽管您可以将嵌套的try-catch中的代码更改为您需要的任何代码。

最后,我在Matlab的右上角创建了一个带有此代码的快捷方式,按Alt-1可以快速访问。

try
    activeEditor = matlab.desktop.editor.getActive;
    currentSelection = activeEditor.SelectedText;

    try
        eval(sprintf('val = nnz(%s);',currentSelection))
        disp(sprintf('>> nnz(%s) = %s',currentSelection,num2str(val)))
    catch ex
        disp(ex.message)
    end
catch ex
    disp(ex.message)
end