Java中使用Matlab打包的JAR包程序

    之前做脉搏采集时需要对数据进行滤波等处理,但是用Java处理显然没有直接用matlab的函数来得简单,下面是具体过程:

1、在matlab中写好一个根据数据文件计算心率的函数:

function HeartRate = purehr(fileName,total_time)

fileData = load(fileName);   %读取脉搏数据数据txt文件
values = fileData(:,1);      %读取第一列数据
sizeOfFile = length(values); %获取数据长度

values = medfilt1(values,4);  %平滑
values = smooth(values ,70);

count = 60; %脉搏波动出现次数,根据values求得,网上有很多思路,这里随便设定个60

HeartRate = 60 * count / total_time; %一定时间内的平均心率

2、函数手动验证能达到预期效果后进行打包:

    在命令窗口键入deploytool,选择Library Compiler:

    选择Java Package,点击右边的蓝色加号选择你刚刚写好的m文件:


    选择后如图:

    拉到下面,更改下Class Name,点击右上角的绿勾勾Package:

    提示保存,这是在保存工程文件,随意选择你的目录:

    然后,就开始编译打包了,等待即可,过程可能比较久:

    编译完成,打开for_redistribution_files_only文件夹,里面的jar文件就是我们需要的程序包了:

3、使用jar包,我用的是IntelliJ IDEA :

    除了刚才Matlab编译出来的purehr.jar,还需要到Matlab目录下,我的目录是:

D:\Program Files\MATLAB\R2016b\toolbox\javabuilder\jar下找到javabuilder.jar,把它也复制出来,放到一个你能找到的地方。

    在IntelliJ IDEA左侧的工程目录打开Library Settings:

在Module中,点击右侧绿色加号把purehr.jar和javabuilder添加进来,最后点击OK即可。

    最后是在JAVA使用:

package com.company;

import com.mathworks.toolbox.javabuilder.MWException;
import purehr.PureHearRate;
import java.io.*;
import java.util.ArrayList;
import java.util.Random;

public class Main {

    public static void main(String[] args) {
        // write your code here
        try {
            PureHearRate pureHearRate = new PureHearRate();
            Object[] results; //用的是集合

            //pureHeartRate.purehr(),第一个参数是有几个输出结果,在这里我们只有一个:HearRate,第二个参数是文件路径,第三个是总时间
            results = pureHearRate.purehr(1,"C:\\Users\\Administrator\\Desktop\\TXT\\a.txt",50);
            System.out.println("心率是: " + results[0].toString());//多个输出则:results[1].toString(),results[2].toString()...
        } catch (MWException e) {
            e.printStackTrace();
        }
    }
}

   结果:

    如有错误或不清楚的地方,还请各位指正!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章