楼主: 格调蓝山

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

[复制链接]

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 22:48:13 | 显示全部楼层

你看下出错后的ff是什么?
你不是存的是f么,载入之后执行:
functions(ff)
看一下结果

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 22:56:35 | 显示全部楼层
kaaaf123 发表于 2013-10-30 22:48
你看下出错后的ff是什么?
你不是存的是f么,载入之后执行:
functions(ff)

K>> functions(f)
ans =
    function: 'gradient'
        type: 'simple'
        file: 'C:\Program Files\MATLAB\R2013a\toolbox\intlab_v5.5\gradient\@gradient\gradient.m'
刚才不小心写错了 这个是运行结果 明显是没有将datafun中的gradient保存下来,是不是我定义句柄方式不对?
有这样的函数没f=@<'路径+函数名'>?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 23:01:20 | 显示全部楼层
格调蓝山 发表于 2013-10-30 22:56
K>> functions(f)
ans =
    function: 'gradient'

你这个ff显然指向的还是intlab的gradient
我刚才是让你先到datafun的路径下,
cd('C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun')
之后执行
f = @gradient
save ss.mat f
之后再返回其他路径load,另外说一下这个生成ss.mat是可以移动到其他路径的,但是datafun下边的gradient是不能移动的

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 23:06:24 | 显示全部楼层
kaaaf123 发表于 2013-10-30 23:01
你这个ff显然指向的还是intlab的gradient
我刚才是让你先到datafun的路径下,
cd('C:\Program Files\MATL ...

问题还是存在,就是按照这种方式做的 方便给邮箱么 要不然我给你发个intlab工具箱然后你试一下?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 23:15:11 | 显示全部楼层
格调蓝山 发表于 2013-10-30 23:06
问题还是存在,就是按照这种方式做的 方便给邮箱么 要不然我给你发个intlab工具箱然后你试一下? ...

cd('C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun')
之后你再命令窗口执行
which gradient
显示什么?

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 23:18:14 | 显示全部楼层
kaaaf123 发表于 2013-10-30 23:15
cd('C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun')
之后你再命令窗口执行
which gradient

C:\Program Files\MATLAB\R2013a\toolbox\intlab_v5.5\gradient\@gradient\gradient.m  % gradient constructor

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 23:19:02 | 显示全部楼层
kaaaf123 发表于 2013-10-30 23:15
cd('C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun')
之后你再命令窗口执行
which gradient

C:\Program Files\MATLAB\R2013a\toolbox\intlab_v5.5\gradient\@gradient\gradient.m  % gradient constructor看来搜索路径与当前目录的关系不同啊 不是以当前目录为起点的啊

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 23:30:41 | 显示全部楼层
格调蓝山 发表于 2013-10-30 23:19
C:\Program Files\MATLAB\R2013a\toolbox\intlab_v5.5\gradient\@gradient\gradient.m  % gradient const ...

当前并不是最优先的,这是顺序列表:
http://www.mathworks.cn/cn/help/ ... ecedence-order.html
不过看之前你最好还是确认下这个路径下的gradient.m文件还在么,文件名有没有被修改

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-31 09:09:49 | 显示全部楼层
kaaaf123 发表于 2013-10-30 23:30
当前并不是最优先的,这是顺序列表:
http://www.mathworks.cn/cn/help/matlab/matlab_prog/function-prec ...

yeah,i guarantee the m file is still there with name same as before ,and the search path is in disorder,"Functions in the current folder" should be ahead of "Functions elsewhere on the path, in order of appearance",what can i do?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-31 16:21:58 | 显示全部楼层
格调蓝山 发表于 2013-10-31 09:09
yeah,i guarantee the m file is still there with name same as before ,and the search path is in dis ...

之前没有注意到,你的这个gradient函数是个Class constructors in @ folders,他的优先级是在当前路径之前
所以你需要把
C:\Program Files\MATLAB\R2013a\toolbox\intlab_v5.5\gradient\
先移除路径
之后按照上边的方法保存matlab的gradient函数的句柄,之后再还原上边的路径
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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