`clear(function_name)`的替代方法是从RAM中删除函数?

时间:2015-04-29 15:19:40

标签: matlab

MATLAB's FAQ中所述,

  

1.3.3.1。当我在MATLAB中编辑一个函数文件时,为什么MATLAB看不到更改,直到所有内容都被清除或MATLAB重新启动?

     

在MATLAB中编写M文件时,可以编写脚本或   功能。不同之处在于从磁盘读取脚本   每次调用时逐行解析。函数被加载到   RAM用于执行。因为它被加载到RAM中,当你编辑一个   函数,在调用new之前,该更改不会加载到RAM中   功能已经完成。

     

要让MATLAB识别您编辑的功能,请输入

clear functions to clear all functions, or

clear <function name> to clear just your function out of RAM.

当我开发一个功能时,这是一个很大的痛苦。反复编辑它(我大部分时间都使用外部编辑器)。我想到最后一行,至少在调试期间,比如

clear(myfunc)

但我担心不必要的副作用。有谁知道有没有?

此外,我更倾向于配置MATLAB,因此一旦顶级功能(即从控制台调用的功能)终止,它就不会自动将调用的功能存储在RAM中。这甚至可能吗?

编辑:我应该提到MATLAB的行为是不一致的。有时我的编辑会在保存m文件后生效,有时他们不会即使我正在使用MATLAB IDE编辑器窗口进行编辑。

1 个答案:

答案 0 :(得分:0)

  

老实说,MATLAB有一个非常强大的编辑器,所以你真的应该这样做   使用它。它会让你的生活更轻松。 (只是意见)

  • 除非您通过逐步运行代码,否则在重新运行代码之前不会运行代码更改(最好使用已清除的工作区)。

  • clear(myfunc)将清除该功能在此时创建的变量。您可以在任何函数或脚本clear variableA variableB的末尾添加您想要在结尾清除的所有变量。这将使您可以控制只清除您想要的内容。清除变量后,唯一的影响是如果稍后在代码中再次调用这些变量,则会发生错误,因为它们不再存在。

  • 如果您只是测试该特定功能并希望每次都不通过调用输入来节省时间,并希望同时清除工作区和命令窗口。您可以在函数定义下添加以下代码。

如果您保留以下代码并从另一个函数或脚本调用该函数,只要输入在外部可用,代码将被忽略。只有在没有输入doc nargin的情况下调用函数时,才会在if语句中添加任何内容。您可以将它添加到顶级功能,只需按下运行按钮或f5,而无需在命令窗口中键入以运行代码。

function [ output1, output2 ] = blah( input1, input2 )
if nargin == 0
   clc
   clear all
   %above two lines will clear the workspace and command window when you run
   %the function 

   %define function inputs

   %(optionally add the following to behave as if you inserted a breakpoint 
   %in the location just before the error occurred (great for debugging)
   db stop if error
end

*您还可以在MATLAB界面的右上角添加一个快捷方式的代码片段,以便在单击它们时清除工作区等。