找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2047|回復(fù): 9
收起左側(cè)

關(guān)于matlab頻域心率計算

[復(fù)制鏈接]
ID:1058749 發(fā)表于 2022-12-22 16:21 | 顯示全部樓層 |閱讀模式
本帖最后由 permanent 于 2022-12-23 19:11 編輯

現(xiàn)在要在頻域用matlab做一個心率計算,我.m文件里是我在arduino濾波完以后的數(shù)據(jù),我給這個數(shù)組存的變量名是DataFIR,然后我基本思路是先給這個數(shù)據(jù)去掉直流分量,然后用fft()這個函數(shù)給他做了一個傅里葉變換,然后找到最大值處對應(yīng)的頻率,乘以60就是我要的每分鐘的心跳次數(shù),但是運行結(jié)果差的太多了,竟然是327! ! !求助大佬看看我的程序是哪里有問題么! ! !改了好久了嗚嗚嗚!!附件是心電數(shù)據(jù),圖片是代碼截圖和運行結(jié)果

clear;
fs=500;
L=fs;
load('DataFIR.mat')
x=DataFIR;
n=1:1:length(x);
y0=x(n)-mean(x);%去掉直流分量
y1=abs(fft(y0));
m = y1(1:length(y1)/2);
N= length(x);
% for i=1:length(m)
%     if m(i)==max(m)%找峰值
%         f=i*(L/N);
%     end
% end
f=find(m==max(m))*L/N;
xinlv=round(f*60)
m = y1(1:length(y1));
x= (0:N-1)*(L/N);
figure;
plot(y0)
figure;
plot(x,m)
xlabel('Frequency (Hz)');ylabel('Magnitude (dB)');title('Filter output');
text(200,2000,"心率"+num2str(xinlv)+"次");

振幅圖

振幅圖

代碼截圖

代碼截圖

DataFIR.zip

588 Bytes, 下載次數(shù): 3

心電數(shù)據(jù)

回復(fù)

使用道具 舉報

ID:844772 發(fā)表于 2022-12-22 21:37 來自手機(jī) | 顯示全部樓層
先看看采樣個數(shù)和頻率,再直接看看分解圖,再處理。另外,直流分量應(yīng)該是0頻率的值處理來的,不用管它啊
回復(fù)

使用道具 舉報

ID:1058749 發(fā)表于 2022-12-22 22:42 | 顯示全部樓層
glinfei 發(fā)表于 2022-12-22 21:37
先看看采樣個數(shù)和頻率,再直接看看分解圖,再處理。另外,直流分量應(yīng)該是0頻率的值處理來的,不用管它啊

您好,這個采樣頻率是題目要求固定的不能變,請問這個采樣個數(shù)和采樣頻率會影響我的心率計算結(jié)果么
回復(fù)

使用道具 舉報

ID:844772 發(fā)表于 2022-12-23 07:22 來自手機(jī) | 顯示全部樓層
permanent 發(fā)表于 2022-12-22 22:42
您好,這個采樣頻率是題目要求固定的不能變,請問這個采樣個數(shù)和采樣頻率會影響我的心率計算結(jié)果么

采樣頻率大于一倍就行了,采樣個數(shù)只是影響精度而已,你先把快速傅立葉分解振幅圖譜打出來看看,就知道怎么處理了
回復(fù)

使用道具 舉報

ID:1058749 發(fā)表于 2022-12-23 09:13 | 顯示全部樓層
glinfei 發(fā)表于 2022-12-23 07:22
采樣頻率大于一倍就行了,采樣個數(shù)只是影響精度而已,你先把快速傅立葉分解振幅圖譜打出來看看,就知道怎 ...

您好,這是快速傅里葉變換后的幅頻特性曲線,我把最高的頻率分量點找到乘以60是不是就是每分鐘的心跳次數(shù),可是我這個找到算出來是327,應(yīng)該是60才對,是我的程序哪里出現(xiàn)問題了么還是我的精度不夠呀?

您好,這個是快速傅里葉變換后畫的圖

您好,這個是快速傅里葉變換后畫的圖
回復(fù)

使用道具 舉報

ID:844772 發(fā)表于 2022-12-23 16:57 來自手機(jī) | 顯示全部樓層
permanent 發(fā)表于 2022-12-23 09:13
您好,這是快速傅里葉變換后的幅頻特性曲線,我把最高的頻率分量點找到乘以60是不是就是每分鐘的心跳次數(shù) ...

它是周期對稱的,而且你只要0到3Hz區(qū)間,放大,應(yīng)該有四個峰值。我覺得是你頻率區(qū)間取的太寬造成的誤差。
回復(fù)

使用道具 舉報

ID:1058494 發(fā)表于 2022-12-23 17:29 | 顯示全部樓層
你把快速傅立葉分解振幅圖譜打出來看一下,就知道怎么去處理了
回復(fù)

使用道具 舉報

ID:1058749 發(fā)表于 2022-12-23 18:39 | 顯示全部樓層
glinfei 發(fā)表于 2022-12-23 16:57
它是周期對稱的,而且你只要0到3Hz區(qū)間,放大,應(yīng)該有四個峰值。我覺得是你頻率區(qū)間取的太寬造成的誤差。

您好,我這個程序是先做心電數(shù)據(jù)的傅里葉變換,然后因為做完后是左右對稱的,所以我把幅度譜取了一半的長度,然后通過max函數(shù)找到一個最大值,通過find函數(shù)找對應(yīng)頻率,并不是看圖自己找的,所以振幅圖的區(qū)間應(yīng)該并不影響計算結(jié)果,因為find找到的應(yīng)該就是那個精確的最大值,而振幅圖就是我的一個參考,那能不能麻煩您幫我看一下這到底是哪里的問題,謝謝您了
回復(fù)

使用道具 舉報

ID:1058749 發(fā)表于 2022-12-23 18:42 | 顯示全部樓層
glinfei 發(fā)表于 2022-12-23 16:57
它是周期對稱的,而且你只要0到3Hz區(qū)間,放大,應(yīng)該有四個峰值。我覺得是你頻率區(qū)間取的太寬造成的誤差。

您好,我這個程序是先做心電數(shù)據(jù)的傅里葉變換,然后因為做完后是左右對稱的,所以我把幅度譜取了一半的長度,然后通過max函數(shù)找到那個最大值,find找對應(yīng)頻率,并不是看圖自己找的,所以振幅圖的區(qū)間應(yīng)該并不影響計算結(jié)果,因為max找到的應(yīng)該就是那個精確的最大值,而振幅圖就是我的一個參考,那能不能麻煩您幫我看一下這到底是哪里的問題,謝謝您了
回復(fù)

使用道具 舉報

ID:1058749 發(fā)表于 2022-12-23 18:54 | 顯示全部樓層
Y97 發(fā)表于 2022-12-23 17:29
你把快速傅立葉分解振幅圖譜打出來看一下,就知道怎么去處理了

您好,這是我的振幅圖,但是顯然最高點對應(yīng)的頻率乘以60并不是正確的計算結(jié)果,可不可以麻煩您幫我看一下程序是哪里出現(xiàn)了問題么,謝謝您了。

振幅圖

振幅圖
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表