楼主: 格调蓝山

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

[复制链接]

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

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

运行时M文件中一般有clear,所以如何长久保存在非当前工作目录下的函数句柄变量?

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 20:47:51 | 显示全部楼层
格调蓝山 发表于 2013-10-30 20:43
运行时M文件中一般有clear,所以如何长久保存在非当前工作目录下的函数句柄变量? ...

你可以用save把它保存在mat文件中
使用时load进来
只要他指向的函数路径没有变就可以重复使用

论坛优秀回答者

退役版主

2206 麦片

财富积分



46

主题

2115

帖子

303

最佳答案
  • 关注者: 162
发表于 2013-10-30 21:15:27 | 显示全部楼层
格调蓝山 发表于 2013-10-30 20:41
嗯 现在的问题的确如此 运行时不可以将两个工作目录随意切换吧

那就用不同名字啊,这个不会有什么难处吧。

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 21:27:51 | 显示全部楼层
kaaaf123 发表于 2013-10-30 20:47
你可以用save把它保存在mat文件中
使用时load进来
只要他指向的函数路径没有变就可以重复使用 ...

貌似这样不行 load进来后并没有指向原来的函数。我做的具体操作过程如下:
在C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun路径下运行>> f=@gradient;>> save ss.mat
然后我在工作目录下运行clc,clear;load('C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\sfy.mat');v = -2:0.2:2;
[x,y] = meshgrid(v);z = x .* exp(-x.^2 - y.^2);[px,py] = f(z,.2,.2);
contour(v,v,z), hold on, quiver(v,v,px,py), hold off
还是没有成功

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 21:28:18 | 显示全部楼层
kaaaf123 发表于 2013-10-30 20:47
你可以用save把它保存在mat文件中
使用时load进来
只要他指向的函数路径没有变就可以重复使用 ...

貌似这样不行 load进来后并没有指向原来的函数。我做的具体操作过程如下:
在C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun路径下运行>> f=@gradient;>> save ss.mat
然后我在工作目录下运行clc,clear;load('C:\Program Files\MATLAB\R2013a\toolbox\matlab\datafun\ss.mat');v = -2:0.2:2;
[x,y] = meshgrid(v);z = x .* exp(-x.^2 - y.^2);[px,py] = f(z,.2,.2);
contour(v,v,z), hold on, quiver(v,v,px,py), hold off
还是没有成功

论坛优秀回答者

1

主题

9788

帖子

1467

最佳答案
  • 关注者: 338
发表于 2013-10-30 21:35:31 | 显示全部楼层
格调蓝山 发表于 2013-10-30 21:28
貌似这样不行 load进来后并没有指向原来的函数。我做的具体操作过程如下:
在C:\Program Files\MATLAB\R20 ...

报错是什么?
是不是说你把clear后边的分号写成全角了?
如果不是,把完整的报错发出来

论坛优秀回答者

退役版主

2206 麦片

财富积分



46

主题

2115

帖子

303

最佳答案
  • 关注者: 162
发表于 2013-10-30 21:43:57 | 显示全部楼层
把你那个工具箱的函数后面加个1(或者随便怎么改),变成gradient1不就行了吗?非要用跟系统自带的一样的名字?

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 22:37:40 | 显示全部楼层
kaaaf123 发表于 2013-10-30 21:35
报错是什么?
是不是说你把clear后边的分号写成全角了?
如果不是,把完整的报错发出来 ...

Error using gradient.gradient
Too many input arguments.
Error in Untitled (line 107)
[px,py] = ff(z,.2,.2); 应该就是load语句没有起到作用

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

入门

188 麦片

财富积分


50500


17

主题

404

帖子

30

最佳答案
  • 关注者: 4
 楼主| 发表于 2013-10-30 22:38:52 | 显示全部楼层
kastin 发表于 2013-10-30 21:43
把你那个工具箱的函数后面加个1(或者随便怎么改),变成gradient1不就行了吗?非要用跟系统自带的一样的名 ...

工具箱中还有好多关联函数 我怕改掉这个会对工具箱中其他函数造成影响

论坛优秀回答者

退役版主

2206 麦片

财富积分



46

主题

2115

帖子

303

最佳答案
  • 关注者: 162
发表于 2013-10-30 22:46:19 | 显示全部楼层
格调蓝山 发表于 2013-10-30 22:38
工具箱中还有好多关联函数 我怕改掉这个会对工具箱中其他函数造成影响

哦,这倒是个问题。你可以这样,当需要用系统的gradient时,用版主的方法(好处在于不用改官方函数名)保存一下句柄,然后用这个即可,工具箱的不用改。这样两不误。毕竟matlab自带函数很少有用自带gradient函数的,或许pde工具箱里有用到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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