java调用matlab 快速计算delta值
Java 调用matlab 快速计算delta
最近这段时间一直很忙,闲下来一些就把这段时间忙的东西总结下,首先由于业务需要,我们需要根据产品计算出来该产品的delta值用于判断,由于第一次接触matlab,请教了好多人,终于写出来了。
先说下思路
1.使用matlab ,批量处理数据,需要在matlab中进行批处理数据2. 要了解到matlab中调用的函数,尽快计算,并处理结果3. 因为java调用是要实时的,同时在java调用的时候也需要一定的时间唤醒matlab,所以得想好使用什么函数4. java 得到数据结果之后,怎么样进行处理
matlab 处理代码
先安装matlab,我安装的时2020b版本的,比较大,
function Delt = matlabpolyfit(input)Delt=[];for i=1:length(input(1,:))/2P_4=polyfit(input(:,i*2-1),input(:,i*2),4);Temp=polyval(P_4,input(:,i*2-1));Temp_Delt=input(:,i*2)-Temp;Delt=[Delt Temp_Delt];end
进行一个矩阵画点,值得注意的是根据传来的数组进行取值,取下标
matlab 打成jar 包
引用同平台的博主大佬的:
添加链接描述
同时介绍了如何在idea 中调用。
Java 调用matlab
因为我这边是每一个产品有很多个温度点,根据温度点对应的ppm值进行模拟曲线图,从而得到对应的delta值。
默认条件为: 每个产品的温度点应该是一样的,即 1 产品为20个温度点,2产品也应该为20个温度点,如果温度点不一样,计算出来的delta会错误,从而影响数据的准确性
// 计算产品的温度点String[] split = String.join(",", temperature).split(","); // 产品的个数int productCodeMapSize = productCodeHashMap.size() * 2;// 要传入的matlab的二维数组的大小double[][] inputData = new double[split.length][productCodeMapSize];// 拼接 二维数组int j = 1;for(String key : productCodeHashMap.keySet()) {List
自此matlab调用就全部完成,同时也能一次性获取到数据的值,因为matlab调用的时候返回的值会自动拼上自己的标识,可以查下如何避免,我第一次的时候就使用字符串处理方式全部替换,从而 进行挨个取值。
查了资料之后可以使用double[] db=(mw.getDoubleData()); 取到返回的值,从而可以一次性处理完成
自此全部处理完成,做个工作小结,方便下次使用的时候有个能找到的地方。
常总结,常进步!!! 共勉!!!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
