matlab - 如何重载清除

标签 matlab octave built-in

用函数重载 clear() 很容易。但是如何访问上游函数(从中调用 clear )的工作空间来清除工作空间? builtin('clear') 只会清除重载函数的工作空间。

function ret = someFun(a,b)
    ret = a + b;
    clear
    ret = 1;
end

function clear()
    persistent boring
    if isempty(boring), boring = 0; end
    boring = boring + 1;
    builtin('clear')
end

屏幕截图:调用重载的 clear 函数后上游函数的工作区 workspace of the upstream function after calling the overloaded clear function

最佳答案

使用evalin使用 'caller' 选项。即更换你的线

builtin('clear')

通过

evalin('caller', 'builtin(''clear'')')

这将清除调用函数工作区中的所有变量

如果您想清除 Matlab 基础工作区中的所有变量,请使用 'base' 选项:

evalin('base', 'builtin(''clear'')')

关于matlab - 如何重载清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30649644/

相关文章:

C "__builtin_types_compatible_p"函数返回 "char*"类型的错误值

c - gcc 是否提供内置函数来读取大端内存?

sql - Informix 7.3 中是否有用于测试字母或数字数据的内置函数?

matlab - 图像峰度函数

matlab - 在不使用冒号运算符的情况下对matlab中的所有元素求和

matlab - 打印当前代码行和特定变量的名称、类型和维度

macos - 在 Mac OS 上的 gnuplot Octave 中找不到 x11 终端

image - 如何在 matlab 中将图像从 double 转换为 uint8?

image - 将角度定量数据转换为定性图像

octave - 如何使用 Octave 更改极坐标图中的标记样式?