为了让自己更好的记住如何运用Matlab打包java以及swing界面参数传递等问题,总结自己在编写小程序时候犯错点与心得,方便下次注意。
使用工具 Eclipse1.7、 Jdk1.7、 Matlab2014a
一、Matlab打成Java包
1、首先保证Matlab版本与Java版本一致(只需大体一致,如都为1.7、都为1.6即可)
2、在环境变量中进行配置:
CLASSPATH:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;C:\Program Files\MATLAB\R2014a\toolbox\javabuilder\jar\javabuilder.jar;%JAVA_HOME%\lib\dt.jar;
JAVA_HOME:
D:\JDK2
MATLAB_JAVA:
D:\JRE2
PATH:
.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;%JAVA_HOME%\lib;C:\ProgramData\Oracle\Java\javapath; %JAVA_HOME%\jre\bin;C:\Program Files\MATLAB\MATLAB Compiler Runtime\v83\runtime\win64;C:\Program Files\MATLAB\R2014a\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;D:\java\bin;D:\JDK2
这里根据实际安装情况进行调整,有些部分可省略不必写。重点是要在PATH中添加MATLAB路径。
3、在matlab中输入deploytool、选择library 在最上面打包中添加.m文件,填写工程名和类名。这里注意填写的工程名,类名在java 中均需要用到,所以需要特别记住。暂时不放图,等有需要在慢慢添加。
本例如下:
Untitled1包中:工程为Untitled1.prj、方法为polyfitfordatarenew、类为Class1、函数名与matlab程序名为polyfitfordatarenew.m
附matlab程序
function [yold ynew Rsquare SSEnew fx]=polyfitfordatarenew(address)
num = xlsread(address);
f=num(:,1);
f=f';
oldlen=15;
x=1:oldlen;
len=size(f,1);
if len==1
len=size(f,2);
end;
newlen=len-oldlen;
Rsquare=zeros(1,newlen);
fx=zeros(newlen,4);
ynew=zeros(1,len);
ynew(1:oldlen)=f(1:oldlen);
yold=f(1:len);
for i=1:newlen
y=f(i:i+oldlen-1);
fx(i,1:3)=polyfit(x,y,2) %对数据进行2次拟合,输出结果
if (mod(i,2)==0)
else
fx(i,1:4)=fx(i-mod(i,2)+1,1:4);
end;
yvalue=polyval(fx(i,1:3),x);
ymean=mean(y);
Rsquare(i)=(norm(yvalue-ymean)/norm(y-ymean))^2; %求R的平方并输出