要测试函数句柄,例如在你的问题中筛选出伪造的x = @ notreallyafunction,你可以使用

functions命令检查句柄并获取引用函数的名称,类型(简单,嵌套,重载,匿名等),和位置,如果它在文件中定义.

>> x = @notreallyafunction;

>> functions(x)

ans =

function: 'notreallyafunction'

type: 'simple'

file: ''

>> x = @(y) y;

>> functions(x)

ans =

function: '@(y)y'

type: 'anonymous'

file: ''

workspace: {[1x1 struct]}

>>

内置句柄的函数输出(例如x = @ round)看起来就像一个伪造的函数句柄(类型是’简单’).下一步是测试存在的命名函数:

>> x = @round;

>> fx = functions(x)

fx =

function: 'round'

type: 'simple'

file: ''

>> exist(fx.function)

ans =

5

>> x = @notreallyafunction;

>> fx = functions(x)

fx =

function: 'notreallyafunction'

type: 'simple'

file: ''

>> exist(fx.function)

ans =

0

但是,您需要处理匿名函数,因为它们无法存在测试:

>> x = @(y) y;

>> fx = functions(x)

>> exist(fx.function)

ans =

0

解决方案是首先检查类型.如果type是’anonymous’,则检查通过.如果类型不是“匿名”,则可以依靠exist来检查函数的有效性.总结一下,你可以创建一个这样的函数:

% isvalidhandle.m Test function handle for a validity.

% For example,

% h = @sum; isvalidhandle(h) % returns true for simple builtin

% h = @fake; isvalidhandle(h) % returns false for fake simple

% h = @isvalidhandle; isvalidhandle(h) % returns true for file-based

% h = @(x)x; isvalidhandle(h) % returns true for anonymous function

% h = 'round'; isvalidhandle(h) % returns true for real function name

% Notes: The logic is configured to be readable, not compact.

% If a string refers to an anonymous fnc, it will fail, use handles.

function isvalid = isvalidhandle(h)

if ~(isa(h,'function_handle') || ischar(h)),

isvalid = false;

return;

end

if ischar(h)

if any(exist(h) == [2 3 5 6]),

isvalid = true;

return;

else

isvalid = false;

return;

end

end

fh = functions(h);

if strcmpi(fh.type,'anonymous'),

isvalid = true;

return;

end

if any(exist(fh.function) == [2 3 5 6])

isvalid = true;

else

isvalid = false;

end

matlab的try函数,matlab – 是否可以在没有try块的情况下测试函数句柄?相关推荐

  1. matlab 圆角,rectangle函数MATLAB matlab中rectangle画圆角矩形

    MATLAB如何画长方形,怎么用rectangle函数 rectangle函数用于绘制矩形图形.例如>>rectangle('Position',[0 0 2 4],'Curvature' ...

  2. Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签、配置不同情况下颜色条的数值范围以及数据类型(整型、浮点型)

    Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签.配置不同情况下颜色条的数值范围以及数据类型(整型.浮点型) 目录

  3. matlab的数学函数,matlab中常见数学函数的使用

    matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...

  4. matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数

    以下的学习整理来自<数字图像处理原理与实践(MATLAB版)> im2bw 功能:将索引图象.灰度图像和RGB彩色图像转换为二值图像 调用形式: >BW = im2bw(I,leve ...

  5. matlab中response函数,matlab函数的种类

    突然发现matlab的函数还是很有讲究的,以前只是用,很少注意这个问题,现在看到了稍微总结一下吧. 在matlab帮助中搜索Types of Functions,可以看到matlab常用的函数种类: ...

  6. matlab 随机整数函数,MATLAB的简单随机生成函数

    关于MATLAB的随机函数: MATLAB含有一些生成随机数的函数: 一.rand ():生成(0,1)区间上均匀分布的随机变量 rand(5,1) %生成随机数排列的列向量. rand(5)%生成5 ...

  7. matlab中copy函数,Matlab 的函数

    &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 预备知识 Matlab 的判断与循环 函数文件 我们已经学了 ...

  8. matlab 遗传算法m函数,MATLAB遗传算法工具箱函数应用

    核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数 [输出参数] pop--生成的 ...

  9. matlab中fval函数,Matlab中linprog函数的用法总结

    Matlab中 linprog函数的用法总结 1.简介 在matlab中,linprog函数可以求解线性规划问题,用于寻找目标函数的最小值 matlab中,规划模型的标注写法如下 $$ min\ f, ...

最新文章

  1. 关于Jquery中ajax方法data参数用法
  2. CodeForces - 1366D Two Divisors(数论)
  3. java实体设置扩展属性setextattributes_transactionAttributes各属性意义及配置
  4. 修改 gcc 和 g++ 的默认版本
  5. x390开机键_【ThinkPadX390评测】ThinkPad X390 4G版全球首测:全时在线超长续航的便携商务利器(全文)_ThinkPad X390_笔记本评测-中关村在线...
  6. 如何调用CAD命令行命令?
  7. 计算机二进制祖宗是西方人?中国道教一张八卦图千年前早已解释!
  8. 深度学习神经网络训练调参技巧
  9. 狂神说SpringMVC
  10. Spring系列之@ComponentScan、@ComponentScans详解(bean批量注册)
  11. CTF题库NSCTF crypto50
  12. html打开无法显示网页怎么回事,Win7打开网页提示“Internet Explorer无法显示该页面”如何解决?...
  13. 近地天体撞击地球原理的设想
  14. Groovy(Java笨狗)系列--Class,Scripts
  15. 小米MIX2手机忘了开机账号和密码
  16. 记一次oom_kill的排查
  17. XDOC Office Server 发布 1.1.0 版本,支持 PDF 加水印
  18. JSP+MySQL1703药店药品销售管理系统
  19. atl offsetofclass
  20. 论文写作课程总结及论文写作计划

热门文章

  1. Web3.0 兴起之际,元宇宙这杯羹怎么分?
  2. 确认! Python再次夺冠,老码农:崩溃!
  3. MySQL 索引分析除了 EXPLAIN 还有什么方法?
  4. 腾讯云全面更新数据智能服务全景图!
  5. IEEE 回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……...
  6. 《复联4》| 生活需要漫威这块糖
  7. 小学学校计算机室财产登记册,小学财产登记制度
  8. hpsocket java代码_HPSocket介绍与使用
  9. python字典是什么数据结构_Python常用数据结构——字典
  10. php 怎么解析文本,PHP解析自定义纯文本数据库