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> productCodeList = productCodeHashMap.get(key);List frList = productCodeList.stream().map(e -> "" + e.get("FR")).collect(Collectors.toList());if(frList.contains("Inf")){break;}List temperatureList = productCodeList.stream().map(e -> "" + e.get("TEMPERATURE")).collect(Collectors.toList());List idFilterList = productCodeList.stream().map(e -> "" + e.get("ID")).collect(Collectors.toList());idList.addAll(idFilterList);String[] tempSplit = String.join(",", temperatureList).split(",");String[] frSplit1 = String.join(",", frList).split(",");int count = 0;while(j < productCodeHashMap.size()+1 && count自此全部处理完成,做个工作小结,方便下次使用的时候有个能找到的地方。 

常总结,常进步!!! 共勉!!!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部