多个函数在matlab中matlab怎么调用函数

matlab(2)
问题描述:
例如两个工具包package A和B的路径都加到了search path中,A的路径在B的前面,且两个包中都有名称为func的函数。在其他地方调用func的时候,由于A的路径排在前面,故执行的是包A中的func。那如果我想执行包B中的函数,该怎么办呢?
解决方法:
在自己的程序的开头加上rmpath('包A的路径'),即在当前的环境下临时在search path中删除包A的路径。所以再执行func时,运行的是包B中的func。
1. 临时添加或删除search path
临时添加path:addpath('路径');
临时删除path:rmpath('路径');
这里临时的意思是search path的改变只发生在当前启动的matlab实例,如果把当前实例关闭再打开或者重新打开一个实例,你会发现search path中的路径并不会受之前临时添加或删除的影响。
那么如果我永久保存临时路径的改变,即重新打开matlab时改变依然存在,应该怎么做呢?
方法1:窗口界面操作,临时改变path后,点击set path,然后点击save。
方法2:命令行操作,在命令行中输入savepath,然后回车。
2. 关于matlab中搜索机制
如果在命令提示符“&&”后输入符号 xt,或程序语句中有一个符号 xt,那么, MATLAB
将试图按下列次序去搜索和识别:&
(1) 在 MATLAB 内存中进行检查搜索,看 xt 是否为工作空间窗口的变量或特殊常量,
如果是,则将其当成变量或特殊常量来处理,不再往下展开搜索识别;&
(2) 上一步否定后,检查 xt 是否为 MATLAB 的内部函数,若肯定,则调用 xt 这个内
(3) 上一步否定后,继续在当前目录中搜索是否有名为“xt.m”或“xt.mex”的文件存
在,若肯定,则将 xt 作为文件调用;&
(4) 上一步否定后,继续在 MATLAB搜索路径的所有目录中搜索是否有名为“xt.m”
或“xt.mex”的文件存在,若肯定,则将 xt 作为文件调用;&
(5) 上述 4 步全走完后,仍未发现 xt 这一符号的出处,则 MATLAB 发出错误信息。&
必须指出的是,这种搜索是以花费更多执行时间为代价的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15337次
排名:千里之外
原创:12篇
转载:13篇
南方医科大学硕士在读,兴趣:图像处理,模式识别,机器学习,吉他
(1)(11)(5)(5)(1)(2)MATLAB如何同时运行多个不同的函数_matlab吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:138,796贴子:
MATLAB如何同时运行多个不同的函数收藏
本人菜鸟新入门,求各位大神们指教。比如有函数function1,function2,function3。。。。如何同时运行它们,不是运行完function1,再运行function2。并且函数间没有关联!
顶,遇到相同问题
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或查看: 6736|回复: 6|关注: 0
如何编写一个matlab函数能接受任意多个参数
<h1 style="color:# 麦片财富积分
新手, 积分 10, 距离下一级还需 40 积分
调用函数的形式应该是 addm(a1,a2,a3,...)然后得到和,a1,a2都是矩阵,注意不能输入矩阵数量。
这个到底怎么做?求指点。关键在“任意多个”
关注者: 130
functionName(varargin)
用varargin这个内置变量作为参数
然后varargin{1},varargin{2}这样来引用第n个输入参数
帖子最佳答案
关注者: 2450
用varargin参数即可
function mysum=addm(varargin)
& &mysum=sum(varargin(:));
math (博士、教授)Email: & &&&QQ:
我在网络上的言论、见解等只代表我个人的观念,与任何研究机构、商业公司等无关。欢迎你通过任何方式与我探讨学术和技术上的问题(学生提问的话,请在论坛上发帖提问)。最新日志:
<h1 style="color:# 麦片财富积分
本帖最后由 朱晓珠 于
00:50 编辑
math 发表于
用varargin参数即可
function mysum=addm(varargin)
但是要求这几个矩阵之和,刚才那个怎么求不出?谢谢
帖子最佳答案
关注者: 2450
朱晓珠 发表于
但是要求这几个矩阵之和,刚才那个怎么求不出?谢谢
自己多动手调试:function mytest
A=[1 2 3];
B=[4 5 6];
C=addm(A,B)
function mysum=addm(varargin)
mysum = 0;
try
& & for i=1:nargin
& && &&&mysum=mysum+varargin{i};
& & end
catch
& & disp('Incorrect forma');
end
math (博士、教授)Email: & &&&QQ:
我在网络上的言论、见解等只代表我个人的观念,与任何研究机构、商业公司等无关。欢迎你通过任何方式与我探讨学术和技术上的问题(学生提问的话,请在论坛上发帖提问)。最新日志:
<h1 style="color:# 麦片财富积分
math 发表于
自己多动手调试:
太感谢了,运行良好。终于能继续推进论文了,虽然这个函数还不很熟,但我回头一定要完全掌握了。
再次衷心感谢管理员熬夜帮我解答问题,早点睡吧 :)
<h1 style="color:# 麦片财富积分
柚籽 发表于
functionName(varargin)
用varargin这个内置变量作为参数
然后varargin{1},varargin{2}这样来引用第n个输 ...
谢谢,又长见识了 :)
站长推荐 /1
Powered by温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1302)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'matlab中solve函数多解问题',
blogAbstract:'matlab里solve如何使用,是否有别的函数可以代替它. matlab里我解y=9/17*exp(-1/2*t)*17^(1/2)*sin(1/2*17^(1/2)*t)=0这样的方程为什么只得到0这一个解,如何可以的到1/2*17^(1/2)*t=n*(pi)这样一族解??&在matlab里面solve命令主要是用来求解代数方程(即多项式)的解,但是也不是说其它方程一个也不能解,不过求解非代数方程的能力相当有限,通常只能给出很特殊的实数解。(该问题给出的方程就是典型的超越方程,非代数方程)从计算机的编程实现角度讲,如今的任何算法都无法准确的给出任意非代数方程的所有解,但是我们有很多成熟的算法来实现求解在某点附近的解。matlab也不例外,它也只能给出任意非代数方程在某点附近的解,函数有两个:fzero和fsolve,具体用法请用he',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:5,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'-1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}在matlab中调用mathematica的函数
已有 4637 次阅读
|个人分类:|系统分类:|关键词:matlab mathematica 函数 调用
matlab的矩阵运算非常强大,而mathematica的数学函数比较丰富,为了将二者的优点结合起来,在此介绍在matlab中调用mathematica中函数的方法。&实验平台1.win7&64位&旗舰版2.matlab&2012a3.mathematica&9.0&中文版4.&&&&具体步骤1.确认已经安装好Matlab和mathematica。&2.对于32位系统,将目录C:\Program&Files\Wolfram&Research\Mathematica\9.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\CompilerAdditions\mldev32\include中的mathlink.h和目录C:\Program&Files\Wolfram&Research\Mathematica\9.0\SystemFiles\Links\MathLink\DeveloperKit\Windows\CompilerAdditions\mldev32\lib中的ml32i1m.lib文件复制到一个新的文件夹。注意此方法未验证,需要32位版本的网友请自行测试。&对于64位系统,将目录C:\Program&Files\Wolfram&Research\Mathematica\9.0\SystemFiles\Links\MathLink\DeveloperKit\Windows-x86-64\CompilerAdditions\mldev64\include中的mathlink.h和目录C:\Program&Files\Wolfram&Research\Mathematica\9.0\SystemFiles\Links\MathLink\DeveloperKit\Windows-x86-64\CompilerAdditions\mldev64\lib中的ml64i3m.lib复制到一个新的文件夹。注意lib文件夹中有多个问题,可能对应于不同的处理器型号,可以随便选择一个能通过下面的编译即可。在本例中,我们将以上两个文件放入C:\mathematica_for_matlab目录。&3.将下载好的Mathematica&Symbolic&Toolbox&for&MATLAB--Version&2.0文件中的math.c和mathrun.m也放入同一文件夹。&4.对于64位的matlab,默认是不安装C语言编译器的。对于32位,默认安装的是lcc,无法编译对应的math.c文件。所以,无论32位还是64位,推荐下载免费的,同时需要安装。如果安装过程中出现问题,可以参照。&5.打开matlab,输入mex&-setup,选择对应的编译器,配置成功后,运行mathrun.m文件。编译成功后会出现math.mexw64文件。这样就可以使用了。&6.打开testscript.m文件进行测试。此时我们就可以使用math(&#39;&#39;)的方法来调用mathematica的函数了,注意在运行时,会弹出一个对话框,此时需要选择C:\Program&Files\Wolfram&Research\Mathematica\9.0文件下的math.exe程序。&Enjoy&it!!&示例:clear&allclcticx=0:0.1:50;y1=zeros(1,length(x));ii=1;for&ii=1:length(x)&&&&math(&#39;matlab2math&#39;,&#39;x&#39;,x(ii));&&&&ytemp=math(&#39;BesselJ[0,&x]&#39;);&&&&y1(ii)=str2double(ytemp(3:end-2));endfigure(1)x=0:0.1:50;plot(x,y1,&#39;r&#39;)math(&#39;quit&#39;)tocticx=0:0.1:50;y2=besselj(0,x);figure(2)plot(x,y2,&#39;.b&#39;)toc&运行结果:Mathematica&Kernel&loading...Mathematica&Kernel&quitting&per&your&request...Elapsed&time&is&2.207739&seconds.Elapsed&time&is&0.079728&seconds.&&&&&&&参考资料:1./support/compilers/R2012a/win64.html&&
转载本文请联系原作者获取授权,同时请注明本文来自李汝江科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:0
评论 ( 个评论)
扫一扫,分享此博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &

我要回帖

更多关于 matlab中怎么调用函数 的文章

 

随机推荐