如果您在命令提示符中执行此操作,您可以通过use this post by gnovice 检索自您将 MATLAB 以文本数组打开后的整个命令历史记录。完成此操作后,您只需在 倒数第二行 行中搜索等号之前的变量...。假设您执行了 lhs 语句。您还需要考虑到您在命令提示符中回显变量而没有左侧语句。我们可以通过regexp轻松找到。
您需要在文本数组的倒数第二行进行搜索,因为 gnovice 捕获历史记录的代码需要额外的代码行。此代码被记录在历史记录中,这不是您想要的。因此,您需要查看倒数第二行/条目。
因此,这样做:
history = com.mathworks.mlservices.MLCommandHistoryServices.getSessionHistory; %// From gnovice's post
historyText = char(history);
lne = historyText(end-1,:); %// Get second last line
%// Do a regexp and retrieve the text with or without the equals sign
var = regexp(lne, '\w*', 'match');
%// Get first match which is the variable before any symbols or just the word
var = var{1};
这是一个简单的例子。这是我在尝试上述代码之前的完整命令历史记录:
>> A = rand(10,10);
>> B = A + 2;
>> D = B * 3;
运行上述代码后,我得到var:
var =
D
同样,如果我们只评估答案而不给左侧赋值:
>> A = rand(10,10);
>> B = A + 3;
>> A
运行上面的代码,我得到:
var =
A
为了最终结束这一切,如果你想把这个变量保存到磁盘,你可以使用eval 语句来促进这一点:
>> name_of_file = 'file.mat';
>> eval(['save ' name_of_file ' ' var]);
上面的代码将采用您指定的文件名...所以在这种情况下它将是test.mat,然后使用var 作为您要保存的工作区的变量调用保存命令。