MATLAB®认为由相同命名的函数构造的函数句柄是相等的。函数的作用是真正的
比较这些类型的句柄时。
fun1 = @sin;fun2 = @sin;isequal (fun1 fun2)
逻辑1
如果您将这些句柄保存到mat文件中,然后将它们加载回工作区,它们仍然是相等的。
与命名函数的句柄不同,表示同一匿名函数的函数句柄是不相等的。它们被认为是不相等的,因为MATLAB不能保证非参数变量的冻结值是相同的。例如,在本例中,A是一个非参数变量。
= 5;1 = @(x)A * x.^2;x = A * x.^2;isequal (h1, h2)
逻辑0
如果你复制了一个匿名函数句柄,那么副本和原句柄是相等的。
1 = @(x)A * x.^2;h2 = h1;isequal (h1, h2)
逻辑1
只有当您的代码对包含嵌套函数的函数调用构造了这些句柄时,MATLAB才认为同一个嵌套函数的函数句柄是相等的。这个函数为同一个嵌套函数构造两个句柄。
函数[h1,h2] = test_eq(a,b,c) h1 = @findZ;h2 = @findZ;函数a.^3 + b.^2 + c';结束结束
由同一嵌套函数和对父函数的同一调用所构造的函数句柄被认为是相等的。
(h1, h2) = test_eq(7) 4, 19日;isequal (h1, h2)
逻辑1
由不同调用构造的函数句柄不被认为是相等的。
(q1、q2) = test_eq(7) 4, 19日;isequal (h1, q1)
逻辑0