查看: 8549|回复: 41|关注: 0

[已解决] INtlab工具箱功能函数gradient与Matlab自带函数相同

[复制链接]

MATLAB 基础讨论
版块优秀回答者

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4

        如题所述 ,我装了INtlab的工具箱,但现在要用gadient求二元函数的梯度 但是显示Too many input arguments.通过help gradient发现INtlab中有gradient的函数。
        而intlab工具箱里的gradient函数输入只有一个,而matlab自带的gradient函数输入可以有很多形式,当装了intlab工具箱系统优先辨识该工具箱的gradient函数,系统自带的就用不了了。
        理想中有两种方法解决这一问题,一种是找到一个能够调用详细路径下函数的方法,还有就是可以自行修改matlab自带函数的函数名,有人知道这两种理想方法之一的解决方案吗?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 02:29:58 | 显示全部楼层
matlab支持面向对象。会对同名的函数重载
如果是matlab基础类型,则会优先调用路径列表之前的
如果是用builtin函数调用,则必然是调用matlab的内建函数

MATLAB 基础讨论
版块优秀回答者

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 07:47:24 | 显示全部楼层

是matlab基础类型,能否实现直接调用路径列表之后的函数?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 14:08:23 | 显示全部楼层
格调蓝山 发表于 2013-10-30 07:47
是matlab基础类型,能否实现直接调用路径列表之后的函数?

可以先到要调用函数的路径保存这个函数的句柄(@),存在workspace中甚至可以save到mat文件中,之后可以在其他地方通过这个句柄

MATLAB 基础讨论
版块优秀回答者

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 15:20:34 | 显示全部楼层
kaaaf123 发表于 2013-10-30 14:08
可以先到要调用函数的路径保存这个函数的句柄(@),存在workspace中甚至可以save到mat文件中,之后可以在 ...

还是有点不太懂,句柄函数不是不带@的么,@的不是匿名函数么,那具体一下,我现在要调用C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\gradient.m这个函数,该如何操作?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 15:41:12 | 显示全部楼层
格调蓝山 发表于 2013-10-30 15:20
还是有点不太懂,句柄函数不是不带@的么,@的不是匿名函数么,那具体一下,我现在要调用C:\Program Files ...

到C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\这个路径下之后
f=@gradient;
之后调用f就相当于调用matlab的gradient

MATLAB 基础讨论
版块优秀回答者

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 17:33:11 | 显示全部楼层
kaaaf123 发表于 2013-10-30 15:41
到C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\这个路径下之后
f=@gradient;
之后调用f就相 ...

我在C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\这个路径下建立一个M文件xx,把gradient里面的全都复制进去,直接调用xx可以解决问题,但是如果定义xxM文件,里面写入function a=xx(f,varargin)
a=@gradient(f,varargin);end还是不行啊,如何具体用句柄函数解决问题呢?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 17:39:24 | 显示全部楼层
格调蓝山 发表于 2013-10-30 17:33
我在C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\这个路径下建立一个M文件xx,把gradient里 ...

不是,我是说执行
f = @gradient
然后f以一个变量的形式保存
调用的时候
f(F)
就相当于
gradient(F)

论坛优秀回答者

退役版主

2206 麦片

财富积分



46

主题

2115

帖子

303

最佳答案
  • 关注者: 162
发表于 2013-10-30 18:36:25 | 显示全部楼层
格调蓝山 发表于 2013-10-30 17:33
我在C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\这个路径下建立一个M文件xx,把gradient里 ...

说来说去,就是不可能用相同的函数名却随心所欲执行不同的函数版本。只能是要么切换工作目录,要么改函数名。f=@griedient只是别名替换而已,指向指定文件所在的函数版本。如果你用griedient=@griedient,那就不无法使用当前目录的同名函数了。

MATLAB 基础讨论
版块优秀回答者

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 20:41:46 | 显示全部楼层
kastin 发表于 2013-10-30 18:36
说来说去,就是不可能用相同的函数名却随心所欲执行不同的函数版本。只能是要么切换工作目录,要么改函数 ...

嗯 现在的问题的确如此 运行时不可以将两个工作目录随意切换吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表