求助:java调用matlab(javabuilder)相关
jdk1.6+eclipse3.4.2+matlab2007a (matlab builder for java)在java class中编写以下方法调用voldeno.m文件:
public void invokeMat(ArrayList<Double> alist){
System.out.println("Begin:invokeMat");
MWNumericArray x=null;
Object[] y=null;
oilvoldenoclass deno=null;
int len=alist.size();
System.out.println("oilinputdata length is"+len);
double[] oilinput=new double;
oiloutput=new double;
for (int i = 0; i < oilinput.length; i++) {
oilinput=alist.get(i);
}
try {
System.out.println("Begin denoise");
x = new MWNumericArray(oilinput,MWClassID.DOUBLE);
System.out.println("MWNumericArray xis "+x);
System.out.println("output x is over!");
deno=new oilvoldenoclass();
y=deno.voldeno(1,x);
System.out.println("Object[] y length is "+y.length);
System.out.println("Object[] yis "+y);
System.out.println("output y is over!");
if(y.length==len){
for(int i=0;i<len;i++){
oiloutput=((MWNumericArray)y).getDouble(i);
}
}else{
System.out.println("Invoke matlab function 'voldeno.m' error!");
}
}catch (Exception e){
System.out.println(e);
}
finally{
/* Free native resources */
MWArray.disposeArray(x);
MWArray.disposeArray(y);
if (deno!= null)
deno.dispose();
}
System.out.println("End:invokeMat");
}
voldeno.m文件如下:
function out= voldeno(x)
%VOLDENO 函数对信号x去噪
% x原始信号,为离散电压的数组
% out为降噪信号,为离散电压的数组
% 画出原始信号
subplot(311), plot(x), axis();
title('原始信号');
% 对x使用sym8小波进行5层分解,得到高频系数。使用SURE阈值、软阈值进行降噪
lev = 5;
out = wden(x,'heursure','s','one',lev,'sym8');
subplot(313), plot(out), axis();
title('降噪信号 - heuristic SURE');
java 项目中添加了javabuilder.jar 和voldeno相关的jar包oilvoldeno.jar
运行时出现以下错误,请问为什么。
??? Undefined function or variable 'reporterrorlogs'.
Error in ==> matlabrc at 277
com.mathworks.toolbox.javabuilder.MWException: An error occurred while initializing the component. 好像是调用voldeno方法时出现错误:out = wden(x,'heursure','s','one',lev,'sym8');
我把out换成y,y= wden(x,'heursure','s','one',lev,'sym8');
报错:Index exceeds matrix dimensions.
其中x是1x166的数组,请问输出y是不是也是1x166类型的数组呢?
我测试了如果在matlab中直接在voldeno函数中输入数组x,该函数是可以运行的,而用java调用就出现错误。。。 上面的问题终于解决了。是matlab wavelet toolbox自带的wtbxmngr.m文件的问题。将文件替换成下面的文件即可
页:
[1]