MATLAB代做  | MATLAB代寫  | MATLAB有償編程
首 頁
當前位置:MATLAB代做|MATLAB代寫|MATLAB有償編程matlab源碼信號處理
基于matlab編程MIT-BIH ECG 信號的數據讀取方法        [↓跳到下載地址]
官方主頁:源碼共享網站:www.kggbzb.tw

聯系方式:客服QQ:1747812398 買代碼源碼軟件站,歡迎咨詢

運行環境:Win9X/2000/XP/2003/

源碼語言:簡體中文

源碼類型:源碼程序 - 信號處理

推薦星級:

更新時間:2015-04-23 00:08:03

源碼簡介

具體的程序代碼如下:
%-------------------------------------------------------------------------
% 程序Fun_ReadECGData 用于讀取ECG信號數據,將原始的二值數據轉換為十進制數
% 輸入參數及其示例:
% PATH= 'D:\MATLAB\R2007b\work\ECG Data'; % 指定數據的儲存路徑
% HEADERFILE= '117.hea';      % .hea 格式,頭文件,可用記事本打開
% DATAFILE='117.dat';         % .dat 格式,ECG 數據
% SAMPLES2READ=2048;          % 指定需要讀入的樣本數
%                             % 若.dat文件中存儲有兩個通道的信號:
%                             % 則讀入 2*SAMPLES2READ 個數據
% 輸出參數:M —— 一個SAMPLES2READ行2列的數據矩陣,每列數據代表一個通道的信號值
%-------------------------------------------------------------------------
                           
function M = Fun_ReadECGData(PATH,HEADERFILE,DATAFILE,SAMPLES2READ)
%------ LOAD HEADER DATA --------------------------------------------------
%------ 讀入頭文件數據 -----------------------------------------------------
%
% 示例:用記事本打開的117.hea 文件的數據
%
%      117 2 360 650000
%      117.dat 212 200 11 1024 839 31170 0 MLII
%      117.dat 212 200 11 1024 930 28083 0 V2
%      # 69 M 950 654 x2
%      # None
%
%-------------------------------------------------------------------------

%-------------------------------------------------------------------------
% 【注】函數 fprintf 的功能將格式化的數據寫入到指定文件中。
% 表達式:count = fprintf(fid,format,A,...)
% 在字符串'format'的控制下,將矩陣A的實數數據進行格式化,并寫入到文件對象fid中。該函數返回所寫入數據的字節數 count。
% fid 是通過函數 fopen 獲得的整型文件標識符。fid=1,表示標準輸出(即輸出到屏幕顯示);fid=2,表示標準偏差。
%-------------------------------------------------------------------------
fprintf(1,'\\n$> WORKING ON %s ...\n', HEADERFILE);   % 在Matlab命令行窗口提示當前工作狀態
signalh= fullfile(PATH, HEADERFILE);                           % 通過函數 fullfile 獲得頭文件的完整路徑
fid1=fopen(signalh,'r');                            % 打開頭文件,其標識符為 fid1 ,屬性為'r'--“只讀”
z= fgetl(fid1);                                        % 讀取頭文件的第一行數據,字符串格式
A= sscanf(z, '%*s %d %d %d',[1,3]);      % 按照格式 '%*s %d %d %d' 轉換數據并存入矩陣 A 中
nosig= A(1);                                         % 信號通道數目
sfreq=A(2);                                           % 數據采樣頻率
clear A;                                                % 清空矩陣 A ,準備獲取下一行數據
for k=1:nosig                                         % 讀取每個通道信號的數據信息
    z= fgetl(fid1);
    A= sscanf(z, '%*s %d %d %d %d %d',[1,5]);
    dformat(k)= A(1);                                % 信號格式; 這里只允許為 212 格式
    gain(k)= A(2);                                     % 每 mV 包含的整數個數
    bitres(k)= A(3);                                   % 采樣精度(位分辨率)
    zerovalue(k)= A(4);                              % ECG 信號零點相應的整數值
    firstvalue(k)= A(5);                               % 信號的第一個整數值 (用于偏差測試)
end;
fclose(fid1);
clear A;
%------ LOAD BINARY DATA --------------------------------------------------
%------ 讀取 ECG 信號二值數據 ----------------------------------------------
%
% 說明:.dat 文件的數據格式
%
%      用 uint8 格式讀入 N 個樣本,存入矩陣 A 中,則 A 有 N 行、3列,每列一個字節,
%      即每行用三個字節表示兩個數m1、m2,每個數 12 bits,故又稱為 212 格式
%      m1的低8位存放在 A(:,1),m2的低8位存放在A(:,3),
%      m1的高4位存放在A(:,2)的低4位,m2的高4位存放在A(:,2)的高4位
%     
% 根據上述數據格式,可以用一系列移位、位與操作,提取出十進制格式的雙通道信號數據
%
%-------------------------------------------------------------------------
if dformat~= [212,212], error('this script does not apply binary formats different to 212.'); end;
signald= fullfile(PATH, DATAFILE);                    % 讀入 212 格式的 ECG 信號數據
fid2=fopen(signald,'r');
A= fread(fid2, [3, SAMPLES2READ], 'uint8')';      % 矩陣A共有SAMPLES2READ行、3列,每列數據都是以uint8格式讀入,注意這時數據通過uint8的讀入方式已經成為十進制數了
fclose(fid2);
M2H= bitshift(A(:,2), -4);                          % 字節向右移四位,即取字節的高四位,屬于信號2的高4位
M1H= bitand(A(:,2), 15);                          % 取字節的低四位,屬于信號1的高4位
PRL=bitshift(bitand(A(:,2),8),9);                % sign-bit   取出字節低四位中最高位,向左移九位
PRR=bitshift(bitand(A(:,2),128),5);            % sign-bit   取出字節高四位中最高位,向左移五位
M( : , 1)= bitshift(M1H,8)+ A(:,1)-PRL;       % 將M1H、M2H分別左移8位,即乘以2^8,再分別加上A(:,1),A(:,2),
M( : , 2)= bitshift(M2H,8)+ A(:,3)-PRR;      % 由于左移時把符號位也移動了,要減去符號位的值
M=M';            % 為了方便后期的數據處理,將輸出矩陣 M 轉置為2行SAMPLES2READ列


提 示:本站所有源碼只提供瀏覽,需要定制的朋友可以聯系在線客服!
注意:價格根據項目的難易程度來定價格業務咨詢

基于matlab編程MIT-BIH ECG 信號的數據讀取方法 --下載地址

注意:為避免不必要的誤會,本站項目里的源碼只公開部分需要的聯系在線客服

本站長期招聘程序代寫高手,歡迎加入華南地區matlab團隊

想創業卻沒有經驗的人

無論你是否有過網上開店的經驗,都可以隨時聯系在線客服,建立自己獨立的網站
想開網店卻不知道如何入手

淘寶創業成本低而且風險小,如果想開淘寶店的朋友可以聯系在線客服。
想兼職創業,卻不擅長交際與服務的人

在家創業月入5000元。網站程序+百套群發工具+網賺資料+域名+空間+本站終身代理資格,這樣你網賺的條件全具備了。每天3小時管理、推廣、收錢。
缺乏能快速贏利型產品的人

導入多種最新流行營銷軟件+網賺教程,讓入駐者輕松加盟、復制有效成交技巧、快速賺錢。

源碼評論評論內容只代表網友觀點,與本站立場無關!

   評論摘要(共 0 條,得分 0 分,平均 0 分) 查看完整評論

瀏覽說明

* 本站所有源碼全部公開,隨時隨地瀏覽!
* MATLAB軟件如用于商業用途,請購買正版!
* 如果您發現下載鏈接錯誤,請點擊報告錯誤謝謝!
* 站內提供的所有軟件包含破解及注冊碼均是由網上搜集,若侵犯了你的版權利益,敬請來信通知我們!
Copyright © 2008-2014 www.kggbzb.tw. All Rights Reserved.
頁面執行時間:250.00000 毫秒
安微25选5开奖号