首先貼上我的.m文件,很簡單:function y=h1(a,b)y = a+b;end使用的matlab版本是R2010b,前序的步驟基本上都驗(yàn)證沒有錯(cuò),然后貼上我的java程序代碼,也很簡單:package com.test;import com.mathworks.toolbox.javabuilder.MWException;import flying.fly;public class test {public static void main(String[] args) throws MWException{System.out.println("test begin!");fly f = new fly();System.out.println("test result is:"+f.h1(3,6));}}但是運(yùn)行之后就出現(xiàn)了如下的錯(cuò)誤:test begin!{??? Error using ==> h1Too many output arguments.} Exception in thread "main" ... Matlab M-code Stack Trace ...com.mathworks.toolbox.javabuilder.MWException: Error using ==> h1Too many output arguments.at com.mathworks.toolbox.javabuilder.internal.MWMCR.mclFeval(Native Method)at com.mathworks.toolbox.javabuilder.internal.MWMCR.access$600(MWMCR.java:23)at com.mathworks.toolbox.javabuilder.internal.MWMCR$6.mclFeval(MWMCR.java:902)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at com.mathworks.toolbox.javabuilder.internal.MWMCR$5.invoke(MWMCR.java:800)at $Proxy0.mclFeval(Unknown Source)at com.mathworks.toolbox.javabuilder.internal.MWMCR.invoke(MWMCR.java:475)at flying.fly.h1(fly.java:196)at com.test.test.main(test.java:11)
2 回答

守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
在java里調(diào)用matlab中的函數(shù)(如本例中的h1),需要傳遞的參數(shù)比函數(shù)本身的參數(shù)要多一個(gè)。
所以正確的調(diào)用形式應(yīng)該為h1(1,a,b),第一參數(shù)是該函數(shù)的輸出的個(gè)數(shù),后面兩個(gè)是h1所需的參數(shù)
添加回答
舉報(bào)
0/150
提交
取消