matlab自己编写一个函数后怎么调用啊 Java可以调用自己编写的R函数吗?

matlab\u600e\u4e48\u8c03\u7528\u51fd\u6570

\u5728matlab\u4e2d\uff0c\u5982\u679c\u662fmatlab\u81ea\u5e26\u7684\u51fd\u6570\uff0c\u5219\u53ef\u4ee5\u6309\u7167\u8be5\u51fd\u6570\u7684\u683c\u5f0f\u76f4\u63a5\u8c03\u7528\uff0c\u5982\u679c\u662f\u81ea\u5df1\u7f16\u5199\u7684\u51fd\u6570\uff0c\u53ef\u4ee5\u5c06\u51fd\u6570\u5199\u5728\u4e00\u4e2a\u6587\u4ef6\u4e2d\uff0c\u4e4b\u540e\u518d\u4e3b\u6587\u4ef6\u4e2d\u8c03\u7528\u3002\u4e3e\u4f8b\u8bf4\u660e\u5982\u4e0b\uff1a

% \u6587\u4ef6\u540d\u4e3afun.m\uff08\u6ce8\u610f\uff1a\u6587\u4ef6\u540d\u9700\u8981\u4e0e\u51fd\u6570\u540d\u4e00\u81f4\uff09
function y = fun(x)
y = x.^2;

\u4e0b\u9762\u5f00\u59cb\u7f16\u5199\u4e3b\u6587\u4ef6\uff08\u6587\u4ef6\u540d\u4e3amain.m\uff09\uff0c\u5e76\u8c03\u7528\u51fd\u6570\u6587\u4ef6fun.m\u4e2d\u7684\u51fd\u6570fun\u3002
\u60c5\u51b51\uff1a\u51fd\u6570\u6587\u4ef6fun.m\u548c\u4e3b\u6587\u4ef6main.m\u5728\u540c\u4e00\u76ee\u5f55\u4e0b\uff0c\u6b64\u65f6\u76f4\u63a5\u8c03\u7528\u5373\u53ef\u3002
a = [1, 2, 3];
b = fun(a); % \u8fd0\u884c\u540e\uff0cb=[1, 4, 9]

\u60c5\u51b52\uff1a\u51fd\u6570\u6587\u4ef6fun.m\u548c\u4e3b\u6587\u4ef6main.m\u5728\u4e0d\u540c\u4e00\u76ee\u5f55\u4e0b\uff0c\u6b64\u65f6\u9700\u8981\u5c06\u51fd\u6570\u6587\u4ef6\u5305\u542b\u8fdb\u6765\u624d\u53ef\u4ee5\u8c03\u7528fun\u51fd\u6570\u3002

addpath('directory'); % \u5176\u4e2d\uff0cdirectory\u662f\u51fd\u6570\u6587\u4ef6fun.m\u7684\u8def\u5f84
a = [1, 2, 3];
b = fun(a); % \u8fd0\u884c\u540e\uff0cb=[1, 4, 9]

Java\u8c03\u7528R\uff0c\u5c31\u662f\u4f7f\u7528JRI.jar\u4e2d\u7684Api\uff0c\u6267\u884c\u4e00\u6761R\u8bed\u8a00\u547d\u4ee4\uff0c\u5f53\u7136\u9996\u5148\u4f60\u8981\u4e86\u89e3R\u8bed\u8a00\u7684\u8bed\u6cd5\u3002
1.JRI\u4e2d\u4e3b\u8981\u7684API
Rengine R\u5f15\u64ce\uff0c\u901a\u8fc7\u5b83\u8fdb\u884cR\u8bed\u8a00\u7684\u542f\u52a8\u3001\u8fd0\u7b97\u3001\u753b\u56fe\u3001\u5173\u95ed\u7b49\u529f\u80fd\u3002
\u4e00\u4e2a\u7ebf\u7a0b\u53ea\u80fd\u5b9e\u4f8b\u5316\u4e00\u6b21\uff0c\u63a8\u8350\u4f7f\u7528\u5355\u4f8b\u6a21\u5f0f\u3002
\u5b9e\u4f8b\u5316\u4ee3\u7801\uff1a
Rengine engine = new Rengine(null,false,null);
Rengine.versionCheck() //R\u7248\u672c\u6821\u9a8c\uff0c\u8fd4\u56detrue\uff1a\u7248\u672c\u6821\u9a8c\u901a\u8fc7 \u8fd4\u56defalse\uff1a\u7248\u672c\u6821\u9a8c\u672a\u901a\u8fc7
engine.waitForR() //R\u52a0\u8f7d\u6821\u9a8c\uff0c\u8fd4\u56detrue\uff1a\u52a0\u8f7d\u6210\u529f \u8fd4\u56defalse\uff1a\u52a0\u8f7d\u5931\u8d25
engine.end() //\u7ed3\u675fR\uff0c\u5728\u540e\u7eed\u6ca1\u6709\u8c03\u7528R\u7684\u60c5\u51b5\u4e0b\u4f7f\u7528\uff0c\u5426\u5219R\u5c06\u9000\u51fa\uff0c\u4e0d\u80fd\u7ee7\u7eed\u4f7f\u7528R\u3002

2.REXP
R\u8ba1\u7b97\u7ed3\u679c\u8868\u8fbe\u5f0f
REXP rexp = engine.eval_r(String str) //\u6267\u884cR\u547d\u4ee4\uff0c\u8fd4\u56de\u7ed3\u679cREXP
rexp.asInt() rexp.asDouble() rexp.as.. //\u5c06REXP\u8f6c\u6210java\u7c7b\u578b
engine.assign(String name,double d) //\u5b9a\u4e49R\u53d8\u91cf\uff0cname\u4e3aR\u4e2d\u53d8\u91cf\u7684\u540d\u5b57

\u4ee5\u4e0a\u5927\u6982\u4e86\u89e3\u4e86JRI\u7684\u57fa\u672cAPI\uff0c\u4e0b\u9762\u5199\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u3002
//\u6c42n\u4e2a\u6570\u7684\u6700\u5927\u503c
Rengine engine = new Rengine(null,false,null);
int[] arr = new int[]{-1,2,1,-3,5,4,-2};
engine.assign("x",arr);
REXP rexp = engine.eval_r("max(x)");
int max = rexp.asInt();
System.out.println(max);
engine.end();

根据我的经验
如果你的程序放在当前文件夹下面(脚本文件和自编函数在同一文件夹下),或者是matlab的默认搜索路径下,是可以直接被调用的。除此之外的函数调用就要用到一个命令:增加matlab的函数库搜索命令,这样的话,matlab在默认路径搜索完之后,就会去访问用户自定义的路径。
%假设你的主程序.m(或者是脚本)在文件夹“我的实验”下,其他要调用的程序在“我的实验\调用函数”下,
%可以采用如下方法增加调用函数文件搜索路径
new=cd; %cd是获得当前路径的命令
new=[new '\调用函数'];
path(path,new);%增加搜索路径
这时候,该文件夹下面的任何函数都可以被调用了。
当然你也可以用
path(path,newpath);%newpath是你要调用的文件夹名字
增加任何路径,比如桌面。

根据我的经验
如果你的程序放在当前文件夹下面(脚本文件和自编函数在同一文件夹下),或者是matlab的默认搜索路径下,是可以直接被调用的。除此之外的函数调用就要用到一个命令:增加matlab的函数库搜索命令,这样的话,matlab在默认路径搜索完之后,就会去访问用户自定义的路径。
%假设你的主程序.m(或者是脚本)在文件夹“我的实验”下,其他要调用的程序在“我的实验\调用函数”下,
%可以采用如下方法增加调用函数文件搜索路径
new=cd; %cd是获得当前路径的命令
new=[new '\调用函数'];
path(path,new);%增加搜索路径
这时候,该文件夹下面的任何函数都可以被调用了。
当然你也可以用
path(path,newpath);%newpath是你要调用的文件夹名字
增加任何路径,比如桌面。

虽然你这个问题提出很久,但我目前也刚学matlab,遇到了类似的问题,所以我分享下我的解决办法。希望对有类似问题的童鞋有些帮助:在matlab打开后,上面有一个Current Dictionary,在里面浏览到你自己的函数所在的文件夹,打开以后就可以了,再编程序时就可以自然用到你所编的函数了。

求详细叙述:命令提示窗口指的是command window吗?
如果是的话
1.在current directory里找到你保存所在文件夹——就是你能从里面看到你的gold.m文件
2.直接在command window里输入文件名就行了

我懂你的意思 你的意思是 你编写了一个主函数 这个函数中要调用一个你自己编写的子函数 是吧 你的问题应该是 主函数调用子函数的方法 我也在学习之中

  • 鍦matlab涓鎬庝箞鐩存帴璋冪敤鍑芥暟
    绛旓細1. 鎵撳紑matlab2012b,鐐瑰嚮銆恘ew script銆戯紝杩涘叆m鏂囦欢缂栬緫鍖恒2. 鍏堢偣鍑汇怤ew銆戯紝鍐嶅湪涓嬫媺閫夐」涓夋嫨銆恠cript銆戙3. 杩涘叆m鏂囦欢缂栬緫鍖猴紝鏂囦欢榛樿鍚嶄负锛歎ntitled,鍗筹細鏈懡鍚嶇殑銆4. 鍦ㄧ紪杈戝尯绐楀彛瀹氫箟瑕佸垱寤虹殑鍑芥暟銆傚湪杩欓噷鎴戜滑缂栬緫涓涓嚱鏁锛歠unction y=raicos(t)y=1/2*(1+cos(pi*t)).*(t<-1&...
  • 鎬庝箞鍦matlab鑷瀹氫箟鍑芥暟涓啀璋冪敤涓涓鑷畾涔夊嚱鏁?
    绛旓細涓涓嚱鏁鍒嗗紑瀛樺偍锛岀洿鎺ヨ皟鐢ㄥ氨琛屼簡锛屽彧涓嶈繃璋冪敤鏃惰缁欏畾鍙傛暟锛屾垜涓鑸兘鍐嶄富鍑芥暟涓敤global瀹氫箟鍙傛暟锛岃繖鏍峰弬鏁拌皟鐢ㄤ細寰堟柟渚裤
  • matlab 濡備綍寤虹珛銆佽皟鐢ㄨ嚜瀹氫箟鍑芥暟?
    绛旓細鍑芥暟鏂囦欢闇瑕佸湪缂栬緫鍣ㄤ腑鎻愬墠缂栧ソ绋嬪簭銆傜偣鍑讳笂闈㈢殑榛勮壊鈥+鈥濆彿锛鏈変竴涓function锛岀偣寮灏卞彲浠缂栧啓鍑芥暟銆傛垜鐨勬槸涓枃鐗堬紝鍜屼綘鐨勫鐓х潃鍙互 鍑芥暟鏂囦欢涓嶅彲浠ョ洿鎺ヨ繍琛岋紝蹇呴』淇濆瓨涓簃鏂囦欢鍚庯紝鍦ㄤ綘鐨勪富绋嬪簭鍐呰皟鐢紝骞冲父鐢ㄧ殑寰堝鍑芥暟閮芥槸杩欎箞鐢ㄧ殑锛屾瘮濡傝姹備綑鍑芥暟 rem(x,y) ,濡傛灉娌℃湁x锛寉鐨勫疄闄呭兼槸娌℃湁鍑芥暟...
  • matlab涓鎯宠鑷繁缂栧啓涓涓嚱鏁瀹炵幇杩欎釜鍔熻兘,杈撳叆a+bi杩欎釜澶嶆暟,杞寲涓虹浉...
    绛旓細fuction (r,thta)=a_b_to_r_thta(a,b)r=(a.^2+b.^2).^(1/2);thta=acos(a./r);
  • matlab鎬庝箞鑷畾涔涓涓嚱鏁,鍏惰嚜鍙橀噺鏄竴涓暟缁,濡傝緭鍏ヤ竴涓暟缁刟,鍑 ...
    绛旓細鍑芥暟瀹氫箟褰㈠紡 function []=funcname()璇彞銆傚氨鏄濡傛灉鏈夊涓緭鍑哄彉閲忓垯浣跨敤[ ]绾︽潫锛屼簰鐩镐箣闂翠互閫楀彿闅斿紑锛岃緭鍏ュ彉閲忎互()绾︽潫锛屽悓鏍蜂互閫楀彿闅斿紑銆傝嫢鍙湁涓涓杈撳嚭鍒欏彲浠ョ渷鍘籟]銆傚嚱鏁颁綋閮ㄥ垎灏卞儚鏅matlab璇彞鍐欏氨琛屼簡锛屼笉蹇呭儚C璇█閭f牱浣跨敤return璇彞鏉ヨ〃绀鸿繑鍥炲硷紝鍙鍑芥暟浣撲腑涓庡嚱鏁板乏杈瑰彉閲忓悕鐩稿悓灏辨槸杩斿洖...
  • 鍦matlab涓瀵规瘡涓涓嚜瀹氫箟鍑芥暟澶氬繀椤诲姞return鍚?
    绛旓細杩欏彲涓嶆槸锛屼竴鑸槸鍦ㄨ繘琛屾帶鍒惰浆绉绘椂鎵嶇敤鍒皉eturn鍘昏繑鍥炰富绋嬪簭锛屽ぇ閮ㄥ垎鎸夐『搴忔墽琛岀殑绋嬪簭閮界敤涓嶅埌銆
  • 鎴戠敤matlab鑷繁缂栧啓浜涓涓姹備簰鐩稿叧鐨勫拰鐢▁corr鍑芥暟鍑烘潵缁撴灉涓嶅悓鎴戞兂...
    绛旓細round(xcorr(x,y));鎴栬 conv(x,flipud(y)); %y鏄垪鍚戦噺鐨勬儏鍐点俢onv(x,fliplr(y)); %y鏄鍚戦噺鐨勬儏鍐
  • MATLAB:缂栧啓涓涓瀹炵幇n闃朵箻鐨鍑芥暟?
    绛旓細濡備綍鐢MATLAB:缂栧啓涓涓瀹炵幇n闃朵箻鐨鍑芥暟锛屽疄鐜扮殑鏂规硶鏈 1銆佺洿鎺ョ敤杞欢鑷甫鐨勯樁涔樺嚱鏁帮紝鍗砯actorial(n)2銆佽嚜瀹氫箟闃朵箻鍑芥暟锛屽嵆 S=Factorial_fun(n)锛屽叾鍐呭 N=n S=1;for n=1:N S=S*n;end fprintf('N锛 = %22d\n',S);鐒跺悗锛屽懡浠ょ獥鍙d腑鎵ц >S=Factorial_fun(5)杩愯缁撴灉 ...
  • 鐢matlab缂栧啓涓涓嚱鏁,杈撳叆涓涓叉暟鍚,鍒嗗埆姹傚嚭杩欎簺鏁扮殑绠楁湳骞冲潎鏁,鍑犱綍...
    绛旓細绠楁湳骞冲潎鏁版槸鎵鏈夋暟鎹殑鎬诲拰闄や互鎬婚鏁版墍寰楃殑鍟嗭紝绠绉板钩鍧囨暟鎴栧潎鏁般佸潎鍊 鍑犱綍骞冲潎鏁帮紙geometric mean锛夋槸鎸噉涓瀵熷艰繛涔樼Н鐨刵娆℃柟鏍 璋冨拰骞冲潎鏁(Harmonic Average)鍙堢О鍊掓暟骞冲潎鏁帮紝鏄讳綋鍚勭粺璁″彉閲忓掓暟鐨勭畻鏈钩鍧囨暟鐨勫掓暟 骞虫柟骞冲潎鏁帮紙quadratic mean锛夛紝鍙堝悕鍧囨柟鏍癸紙Root Mean Square锛夛紝鏄寚涓缁...
  • matlab​鏍规嵁鍑芥暟琛ㄨ揪寮缂栧啓M鍑芥暟,鍒嗗埆璁$畻鍦ㄥ鐨勫嚱鏁板,骞剁敾鍑哄嚱鏁...
    绛旓細瀹氫箟鍑芥暟锛堜繚瀛樺埌鏂囦欢fun.m锛夛細function y = fun(x)y = 1/2*exp(-x/2).*(x>=0) + (x+1/2).*(x>=-1/2&x<0) + 0*(x<-1/2);鍦ㄥ懡浠ょ獥鍙h皟鐢紙瑕佽绠楀嚱鏁板肩殑鍧愭爣浣犳病鏈夌粰鍑猴紝璇疯嚜琛屼慨鏀癸級锛歺 = -1:0.01:1;y = fun(x);plot(x,y,'clip','off','linewidth',2)...
  • 扩展阅读:matlab调用另一个m文件 ... matlab调用函数命令 ... matlab图例legend ... matlab怎么创建函数 ... matlab引用自己的函数 ... matlab编写求n 的函数 ... matlab怎么设计一个函数 ... matlab function函数 ... matlab怎么调用自己的函数 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网