matlab的try函数,matlab – 是否可以在没有try块的情况下测试函数句柄?
要测试函数句柄,例如在你的问题中筛选出伪造的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块的情况下测试函数句柄?相关推荐
- matlab 圆角,rectangle函数MATLAB matlab中rectangle画圆角矩形
MATLAB如何画长方形,怎么用rectangle函数 rectangle函数用于绘制矩形图形.例如>>rectangle('Position',[0 0 2 4],'Curvature' ...
- Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签、配置不同情况下颜色条的数值范围以及数据类型(整型、浮点型)
Python混淆矩阵可视化:plt.colorbar函数自定义颜色条的数值标签.配置不同情况下颜色条的数值范围以及数据类型(整型.浮点型) 目录
- matlab的数学函数,matlab中常见数学函数的使用
matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...
- matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数
以下的学习整理来自<数字图像处理原理与实践(MATLAB版)> im2bw 功能:将索引图象.灰度图像和RGB彩色图像转换为二值图像 调用形式: >BW = im2bw(I,leve ...
- matlab中response函数,matlab函数的种类
突然发现matlab的函数还是很有讲究的,以前只是用,很少注意这个问题,现在看到了稍微总结一下吧. 在matlab帮助中搜索Types of Functions,可以看到matlab常用的函数种类: ...
- matlab 随机整数函数,MATLAB的简单随机生成函数
关于MATLAB的随机函数: MATLAB含有一些生成随机数的函数: 一.rand ():生成(0,1)区间上均匀分布的随机变量 rand(5,1) %生成随机数排列的列向量. rand(5)%生成5 ...
- matlab中copy函数,Matlab 的函数
              预备知识 Matlab 的判断与循环 函数文件 我们已经学了 ...
- matlab 遗传算法m函数,MATLAB遗传算法工具箱函数应用
核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数 [输出参数] pop--生成的 ...
- matlab中fval函数,Matlab中linprog函数的用法总结
Matlab中 linprog函数的用法总结 1.简介 在matlab中,linprog函数可以求解线性规划问题,用于寻找目标函数的最小值 matlab中,规划模型的标注写法如下 $$ min\ f, ...
最新文章
- 关于Jquery中ajax方法data参数用法
- CodeForces - 1366D Two Divisors(数论)
- java实体设置扩展属性setextattributes_transactionAttributes各属性意义及配置
- 修改 gcc 和 g++ 的默认版本
- x390开机键_【ThinkPadX390评测】ThinkPad X390 4G版全球首测:全时在线超长续航的便携商务利器(全文)_ThinkPad X390_笔记本评测-中关村在线...
- 如何调用CAD命令行命令?
- 计算机二进制祖宗是西方人?中国道教一张八卦图千年前早已解释!
- 深度学习神经网络训练调参技巧
- 狂神说SpringMVC
- Spring系列之@ComponentScan、@ComponentScans详解(bean批量注册)
- CTF题库NSCTF crypto50
- html打开无法显示网页怎么回事,Win7打开网页提示“Internet Explorer无法显示该页面”如何解决?...
- 近地天体撞击地球原理的设想
- Groovy(Java笨狗)系列--Class,Scripts
- 小米MIX2手机忘了开机账号和密码
- 记一次oom_kill的排查
- XDOC Office Server 发布 1.1.0 版本,支持 PDF 加水印
- JSP+MySQL1703药店药品销售管理系统
- atl offsetofclass
- 论文写作课程总结及论文写作计划
热门文章
- Web3.0 兴起之际,元宇宙这杯羹怎么分?
- 确认! Python再次夺冠,老码农:崩溃!
- MySQL 索引分析除了 EXPLAIN 还有什么方法?
- 腾讯云全面更新数据智能服务全景图!
- IEEE 回应禁止华为系审稿人;WiFi联盟、蓝牙联盟已恢复华为成员资格;中国计算机学会:暂时中止与IEEE通信学会合作……...
- 《复联4》| 生活需要漫威这块糖
- 小学学校计算机室财产登记册,小学财产登记制度
- hpsocket java代码_HPSocket介绍与使用
- python字典是什么数据结构_Python常用数据结构——字典
- php 怎么解析文本,PHP解析自定义纯文本数据库