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();
        }
    }
}

   結果:

    如有錯誤或不清楚的地方,還請各位指正!

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