我是靠谱客的博主 文艺悟空,最近开发中收集的这篇文章主要介绍MATLAB 基础知识 数据类型 函数句柄 比较函数句柄,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

比较根据命名函数构造的句柄

MATLAB 会将根据同一命名函数构造的函数句柄视为相同的函数句柄。isequal 函数在比较以下类型的句柄时会返回 true 值。

fun1 = @sin;
fun2 = @sin;
isequal(fun1,fun2)
ans =

  logical

   1

如果将这些句柄保存为 MAT 文件,以后将它们加载回工作区时它们仍然是相等的。

比较指向匿名函数的句柄

与指向命名函数的句柄不同,表示同一个匿名函数的函数句柄不相等。之所以将其视为不等,是因为 MATLAB 不能保证非参数变量的冻结值相同。例如,在本例中,A 是一个非参数变量。

A = 5;
h1 = @(x)A * x.^2;
h2 = @(x)A * x.^2;
isequal(h1,h2)
ans =

  logical

   0

如果您创建匿名函数句柄的副本,则副本与原始句柄相等。

h1 = @(x)A * x.^2;
h2 = h1;
isequal(h1,h2)
ans =

  logical

   1

比较嵌套函数的句柄

仅当您的代码在对包含嵌套函数的函数的同一调用中构造这些句柄时,MATLAB 才会将同一嵌套函数的函数句柄视为相等。此函数会构造两个指向同一嵌套函数的句柄。

function [h1,h2] = test_eq(a,b,c)
h1 = @findZ;
h2 = @findZ;

   function z = findZ
   z = a.^3 + b.^2 + c';
   end
end

根据同一嵌套函数且在对其父函数的同一调用中构建的函数句柄被视为相等。

[h1,h2] = test_eq(4,19,-7);
isequal(h1,h2)
ans =

  logical

   1

使用不同调用构造的函数句柄被视为不相等。

[q1,q2] = test_eq(4,19,-7);
isequal(h1,q1)
ans =

  logical

   0

最后

以上就是文艺悟空为你收集整理的MATLAB 基础知识 数据类型 函数句柄 比较函数句柄的全部内容,希望文章能够帮你解决MATLAB 基础知识 数据类型 函数句柄 比较函数句柄所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部