[問題] 關於資料特徵點的判斷已回收

看板MATLAB作者 (FAN)時間17年前 (2008/11/09 16:24), 編輯推噓3(309)
留言12則, 4人參與, 最新討論串1/1
在下剛接觸MATLAB不久 最近嘗試利用程式來計算心電圖肌電圖等資料 遇到了一些瓶頸,所以上來向各位前輩們求助 ==== 這是一個60秒的心電圖訊號 http://sm92.kmu.edu.tw/fan/ecg.jpg
原本訊號取樣頻率是1000samples/s 圖已經畫成X座標單位是秒 接下來我用以下的程式計算心跳率 利用ginput來取點,點連續20個峰值, 再用迴圈算出每個點之間的距離 CODE如下: % Calcute HR & HRV [X,Y] = ginput(20); for a = 1:length(X)-1 hr(a) = 60/(X(a+1)-X(a)); end HeartRate = mean(hr); HRV = std(hr); % Result output fprintf('平均心率=%4.2f\n',HeartRate); fprintf('心率變異=%4.2f\n',HRV); ==== 我的問題是, 我要如何讓程式判斷出每最高峰的轉折點 而不需要用人工找那20個點呢?? 請幫幫我吧!!! 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.213.165

11/10 04:45, , 1F
圖看起來很規則 設定threshold應該就OK了吧
11/10 04:45, 1F

11/10 04:46, , 2F
eg. [ign,ind] = find(data>150);
11/10 04:46, 2F

11/10 11:41, , 3F
謝謝建議!!試了這個方法之後,發現它不能很準確..
11/10 11:41, 3F

11/10 11:42, , 4F
因為只能找到大於某個值的點,不能找出每個區段中
11/10 11:42, 4F

11/10 11:43, , 5F
最大值出現的時間點,請問能否找到區段中峰值出現的時間?
11/10 11:43, 5F

11/10 11:44, , 6F
補:因為取樣率1000,所以可能最高點附近都很接近,
11/10 11:44, 6F

11/10 11:46, , 7F
threshold如果設高一點,又會有些點沒抓出來
11/10 11:46, 7F

11/10 13:36, , 8F
不過用s大的作法 至少每個峰值的區間都找出來了 每個區間再
11/10 13:36, 8F

11/10 13:39, , 9F
比較一次就會有答案 要一次找到每個峰值的位置 matlab應該
11/10 13:39, 9F

11/10 13:40, , 10F
沒提供這種函數 不然只能從工具箱裡面去找有沒有這類的功能
11/10 13:40, 10F

11/13 12:23, , 11F
我會使用微分的方式...微分兩次的變號為峰值點...
11/13 12:23, 11F

11/13 12:23, , 12F
因為這是離散訊號,所以使用差分,峰值位置會差兩格..
11/13 12:23, 12F
文章代碼(AID): #195fuorb (MATLAB)
文章代碼(AID): #195fuorb (MATLAB)