相当于“evalin”,不需要输出参数(内部)

2024-01-27

背景——我正在阅读有关访问隐藏函数的内容,并开始使用builtin。我写了一个小函数:

function klear(x)
%  go to parent environment...
evalin('base', builtin('clear','x')) ;  
end

这会引发错误:

Error using clear
Too many output arguments.

我认为发生这种情况是因为evalin要求从所输入的任何内容中获得输出,但是clear是没有返回值的函数之一。
所以有两个问题:我是否正确解释了这一点,如果是的话,是否有一个替代函数允许我在父环境中执行函数(不需要输出)?

注意:我完全清楚反对尝试访问隐藏函数的论点(或者更确切地说,避免以重载基本函数等的方式命名函数)。这个问题主要是为了帮助我了解 MATLAB 中可以做什么和不能做什么。

Note 2

我最初的目标是编写一个需要输入参数的重载函数,以避免恶意软件行为clear,默认删除所有内容。在 Q&D 伪代码中,

function clear(x)
if ~exist('x','var') return
execute_in_base_env(builtin(clear(x)))
end

你的有几个问题clear覆盖:

  • 它将永远clear在基础工作区中,无论从何处调用。
  • 它不支持多个输入,这是clear的常见用例。

相反,我会检查它是否是从基础工作区调用的,并且在特殊情况下检查它是否清除了所有内容。如果某个函数正在调用普通函数clear清除它的所有变量,这是不好的做法,但这仍然是该函数逻辑的工作方式,并且您不想破坏它。否则,它可能会出错,或更糟糕的是,返回不正确的结果。

所以,像这样:

function clear(varargin)
  stk = dbstack;
  if numel(stk) == 1 && (nargin == 0 || ismember('all', varargin))
    fprintf('clear: balking at clearing all vars in base workspace. Nothing cleared.\n');
    return;
  end

  % Check for quoting problems
  for i = 1:numel(varargin)
    if any(varargin{i} == '''')
      error('You have a quote in one of your args. That''s not valid.');
    end
  end
  % Construct a clear() call that works with evalin()
  arg_strs = strcat('''', varargin, '''');
  arg_strs = [{'''clear'''} arg_strs];
  expr = ['builtin(' strjoin(arg_strs, ', '), ')'];
  % Do it
  evalin('caller', expr);
end

我希望不言而喻,这是一种残酷的黑客行为,我在实践中不会推荐。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相当于“evalin”,不需要输出参数(内部) 的相关文章

  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • Matlab:保存后翻转图例顺序和图例重叠图

    我正在尝试根据以下内容反转我的图例条目顺序matlab条形图中图例颜色的逆序 https stackoverflow com questions 31178005 reverse ordering of legend colors in m
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • 两个向量之间的欧氏距离(单行矩阵)

    我有两个向量 单行矩阵 假设我们已经知道长度len A x1 x2 x3 x4 x5 B y1 y2 y3 y4 y5 计算它们之间的欧几里德距离最快的方法是什么 我的第一次尝试是 diff A B sum 0 for column 1 l
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 如何将二进制值列表转换为int32类型?

    我在 MATLAB 工作区中有一个小端格式的二进制数列表 我想将它们转换为 int32 a是由 0 和 1 组成的双向量 如下所示 a 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 1
  • 如何告诉 mex 链接到 /usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的 libstdc++.so.6?

    现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4 4 6 但我想使用 gcc 4 7 风险自负 现在如果我直接用 mex 编译一些东西 它会抱怨 usr lib gcc i686 linux gnu 4 7 cc1plu
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • 从开始/结束索引列表创建向量化数组

    我有一个两列矩阵M包含一堆间隔的开始 结束索引 startInd EndInd 1 3 6 10 12 12 15 16 如何生成所有区间索引的向量 v 1 2 3 6 7 8 9 10 12 15 16 我正在使用循环执行上述操作 但我想
  • ROC曲线和libsvm

    给定一条 ROC 曲线plotroc m see here http www csie ntu edu tw cjlin libsvmtools roc curve for binary svm 理论问题 如何选择要使用的最佳阈值 编程问题
  • 给定协方差矩阵,在Matlab中生成高斯随机变量

    Given a M x M期望的协方差 R 以及所需数量的样本向量 N计算一个N x M高斯随机向量 X在普通 MATLAB 中 即不能使用r mvnrnd MU SIGMA cases 不太确定如何解决这个问题 通常你需要一个协方差并且意
  • 分离并重新附加“tools:rstudio”

    又名玩火 以下不起作用 rstd obj lt as environment tools rstudio detach tools rstudio attach rstd obj name tools rstudio 好吧 它似乎有效 但随
  • 检测分段常数信号中的阶跃

    我有一个分段恒定信号 如下所示 我想检测步骤转换的位置 标记为红色 我目前的做法 使用移动平均滤波器平滑信号 http www mathworks com help signal examples signal smoothing html
  • MATLAB 列含义的内存分析

    我正在使用 MATLAB 配置文件来使用命令观察内存 profile memory on profile clear my code profile report and i got this table 1 我想问一下什么意思 已分配内存
  • 如何知道Matlab中系统命令执行过程中经过的时间?

    我有一个运行系统脚本的 Matlab 代码 该脚本可能会因命令运行而停止 我想知道是否有一种方法可以让程序知道它是否花费了很长时间并执行其他操作 这是代码 tic status cmdout system iperfcmd The prog
  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB

随机推荐

  • 如何使用 boto 以编程方式检查 Amazon S3 权限?

    我们在 Amazon S3 的存储桶中有一棵茂密的树 其中包含大量文件 我刚刚发现 虽然有些文件有两个权限条目 如单击 AWS 管理控制台中的一个文件 然后单击属性 gt 权限 一行是 所有人 另一行是某个特定用户 其他文件只有一个该用户的
  • 将类函数转换为 lambda 函数

    我正在尝试拉出这样的东西 class helper some class variables public function somehelper somevar some action to somehelper somevar 我希望它
  • Android通知大图样式和大文本样式

    我已经使用大图片样式构建了推送通知 如图所示here http developer android com reference android app Notification BigPictureStyle html 是否可以混合大图片样
  • 何时在 MySQL 表中使用 NULL

    我很欣赏数据库表中 NULL 值的语义 它不同于 false 和空字符串 然而 我经常读到有关字段可为空时的性能问题的信息 并建议在 NULL 实际上在语义上正确的情况下使用空字符串 什么情况适合使用可为空字段和 NULL 值 有哪些权衡
  • Java Singleton 与 static - 是否有真正的性能优势?

    我正在合并一个 CVS 分支 较大的更改之一是用具有静态初始化块和所有静态方法的抽象类替换单例模式 这是值得保留的东西吗 因为它需要合并很多冲突 我会在什么样的情况下考虑这种重构是值得的 我们在 Weblogic 8 1 下运行这个应用程序
  • 查找包含给定文件的目录?

    我希望这是一个有趣的问题 我想找到一个包含所有给定文件的目录 到目前为止我所做的如下 在unix中查找多个文件 find type f name cache o name xml o name html 参考 http alvinalexa
  • Apache/PHP 大文件下载(>2Gb)失败

    我正在使用 PHP 脚本来控制下载文件的访问 这对于 2Gb 以下的任何文件都适用 但对于较大的文件则失败 Apache 和 PHP 都是 64 位 Apache will如果直接访问则允许下载文件 我不允许 PHP 的核心 忽略访问控制
  • 设置自动填充建议的样式

    非常简单 我正在研究输入的 CSS 但是当 Chrome 在 MacOS 上 使用建议 自动填充功能 填充输入时 它会更改字体 有没有办法覆盖它以保留我的自定义字体和其余 CSS 属性 最令人不安的是 场地的高度发生了变化 这真的很难看 也
  • 如果屏幕小于一定宽度则隐藏 div

    如果用户屏幕 document ready function if screen width gt 1024 if screen size is 1025px wide or larger yourClass css display non
  • 如何在“rails new app --skip-test-unit”之后重新启用 Rails 4 中的 Test::Unit

    I used rails new app skip test unit 因为最初 我认为我可以稍后添加测试 我开发了我的应用程序的很大一部分 现在 我想添加 Test Unit 但我找不到任何有关如何执行此操作的文档 谷歌搜索仅引导我找到
  • 如何在不使用 JS 发出新请求的情况下读取当前标头? [复制]

    这个问题在这里已经有答案了 可能的重复 在 Javascript 中访问 HTTP 标头 https stackoverflow com questions 220231 accessing http headers in javascri
  • 设置 HTTPClient get() 请求的超时

    此方法提交一个简单的 HTTP 请求并调用成功或错误回调即可 void getSimpleReply String command callback errorCallback async try HttpClientRequest req
  • 如何将 S4 槽选择器“@”重载为通用函数

    我正在尝试转动 R 中的运算符转换为 S3 系统的通用函数 基于中的章节编写 R 扩展 添加新的泛型 https cran r project org doc manuals r release R exts html Adding new
  • 选择单打和双打之一

    我有一个包含 A B 和 C 列的表 A 列可能有重复项 我需要一个查询 该查询将为我提供一个在 A 列中具有唯一值的结果集 并且我不关心它可能需要哪些重复项 我事先对其余数据一无所知 一个例子可能是 A B C 1 8 8 1 7 7 2
  • 更改 Swift 3 中 UIBarButtonItem(图像)的大小

    我正在尝试更改导航栏中某些图标的大小 但我对如何执行此操作有点困惑 到目前为止我的代码是 func setUpNavBarButtons let moreButton UIBarButtonItem image UIImage named
  • 用户“NT AUTHORITY/ANONYMOUS LOGIN”的 Azure SQL 服务器登录失败

    我正在尝试使用我的 Azure Active Directory 帐户从 SSMS 登录 Azure SQL 服务器 我已经遵循了这个指南 使用 SQL 配置和管理 Azure Active Directory 身份验证 https lea
  • 如何使用 JavaScript 返回 eval(code) 并获取对象?

    我有这段代码 我想要它做的是加载 js 文件然后运行它 当它运行时 我希望它返回一个参数 甚至更好的是一个对象 这是我页面中的代码 var runCode function var xhr new XMLHttpRequest xhr op
  • 什么是“实时”

    我无法决定是否将我的应用程序分类为 实时 或 接近实时 甚至可能是其他类别 该软件立即接收从源生成的数据 然后根据某些规则 在满足某些条件时发出警报 它采用每30秒检查最后30秒数据的方法来查看是否满足规则的标准 那是实时的吗 实时与准实时
  • 错误代码:2013。查询期间丢失与 MySQL 服务器的连接

    我拿到错误代码 2013 查询期间丢失与 MySQL 服务器的连接当我尝试使用 MySQL Workbench 向表添加索引时出错 我还注意到 每当我运行长查询时它就会出现 有没有办法增加超时值 新版本的 MySQL WorkBench 提
  • 相当于“evalin”,不需要输出参数(内部)

    背景 我正在阅读有关访问隐藏函数的内容 并开始使用builtin 我写了一个小函数 function klear x go to parent environment evalin base builtin clear x end 这会引发