基于MATLAB的實(shí)時(shí)數據采集與分析研究
?。?)配置屬性。屬性分為公共屬性和通道/數據線(xiàn)屬性,而兩者又再被分為基本屬性與設備特有屬性。其中公共屬性為返回設備對象的所有可配置的公共屬性名及其可能的屬性值,應將對象作為Set函數的輸入參數;要返回設備對象的所有公共屬性及其當前值或為顯示某個(gè)屬性的當前值,應將對象或屬性名作為Get函數的輸入參數。對于通道/數據線(xiàn)屬性,則使用Channel(Line)屬性。本文引用地址:http://dyxdggzs.com/article/163805.htm
?。?)獲取或輸出數據。包括啟動(dòng)設備對象,記錄或發(fā)送數據及停止設備對象三個(gè)步驟。其中啟動(dòng)設備執行Start函數、提取記錄數據使用Getdata函數、發(fā)送數據前的數據排列使用Putdata函數、停止使用用Stop函數;另外運行狀態(tài)用Running屬性標識、記錄狀態(tài)由Logging屬性標識、發(fā)送狀態(tài)由Sending屬性標識,其取值均為On或Off。對于數字量I/O對象,該部分處理有所不同。
?。?)清除。當不再需要設備對象時(shí),應使用刪除函數Delete將設備對象從內存中清除,并使用清除命令Clear將對象從MATLAB工作空間中清除。
3.2 應用實(shí)例與分析
3.2.1 MATLAB對RS232 的串口通信設計
MATLAB是一個(gè)跨平臺軟件,而此處使用的是自主設計的數據采集卡,因此不具備直接訪(fǎng)問(wèn)的能力。但MATLAB的面向對象技術(shù),已用一個(gè)對象把計算機串口封裝起來(lái),只要用Serial函數創(chuàng )建串口對象即可[6]。關(guān)鍵語(yǔ)句為:s=serial(‘COM1’,‘BaudRate’,9600)。MATLAB封裝的串口對象支持對串口的異步讀寫(xiě)操作,通過(guò)對異步讀寫(xiě)設置,PC在執行讀寫(xiě)串口函數時(shí)能立即返回,不必等待串口把數據串輸完畢。當指定數據傳輸結束時(shí)就觸發(fā)事件,執行事件回調函數,對事件回調函數編程,進(jìn)行數據處理,這樣可以大大提高數據處理的效率。
MEX是MATLAB的可執行程序,是MATLAB調用其它語(yǔ)言編寫(xiě)的程序或算法的接口,在Windows環(huán)境下是擴展名為DLL的動(dòng)態(tài)鏈接庫。對MEX編譯器進(jìn)行配置的方法是:在MATLAB命令窗口中運行mex-setup,選擇VC6.0++作為編譯器。用C語(yǔ)言編寫(xiě)端口讀、寫(xiě)的操作程序,程序包含有頭文件mex.h和mexFunction函數,mexFunction函數中nelhs表示輸出變量的個(gè)數,plhs包含指向輸出變量指針的數組,nrhs表示輸入變量的個(gè)數,prhs包含指向輸入變量指針的數組。接口編形成的MEX文件與參考文獻[7][8]類(lèi)似,在此不再累述。
3.2.2 數據采集與分析
?。?)數據讀取的MATLAB實(shí)現
主要代碼為:
%讀取通道數及總數據量
fid=fopen(‘cardiogram.add’,‘r’);
Status=fseek(fid,56,‘bof’);
nDataChNum=fread(fid,1,‘long’);
status=fseek(fid,204, ‘bof’);
nAllDataLength=fread(fid,1, ‘long’);
%按通道數循環(huán)讀出各通道起始地址
status=fseek(fid,76, ‘bof’);%
for i=1: nDataChNum
pChannelAdr(i)=fread(fid,1, ‘long’)
end
%按通道數循環(huán)讀出各通道數據
for i=1:nDataChNum
status=fseek(fid,pChannelAdr(i)+360, ‘bof’)
nSegNum=fread(fid,1, ‘log’)
status=fseek(fid,pChannelAdr(i)+160*nSegNum+1024, ‘bof’);
data=fread(fid,nAllDataLength, ‘short’);
end
sta=fclose(fid);
(2)數據處理與圖形繪制
利用MATLAB的圖形用戶(hù)接口,通過(guò)編程可以很方便地構建數據采集與分析的用戶(hù)交互界面。將數據采集系統采集的實(shí)際心電圖信號,用RS232導入到PC中。在MATLAB環(huán)境下,運行以上已經(jīng)編好的程序,即可得到如下的模擬實(shí)驗結果。不過(guò)要說(shuō)明的是,此處使用的數據采集系統是八通道同步采集,而仿真時(shí)僅使用的是其中一個(gè)通道進(jìn)行的操作。
figure 3 實(shí)際心電圖信號的采集與處理效果圖
4、結語(yǔ)
使用自主開(kāi)發(fā)的數據采集系統,通過(guò)合理運用串口及MTLAB強大的數值計算和分析功能,實(shí)現了基于MATLAB的實(shí)時(shí)數據處理和分析。通過(guò)模擬實(shí)驗表明,該方法對于其它類(lèi)似采集卡依然實(shí)用,具有一定的應用價(jià)值和發(fā)展前景。
評論