|
本帖最后由 permanent 于 2022-12-23 19:11 編輯
現(xiàn)在要在頻域用matlab做一個(gè)心率計(jì)算,我.m文件里是我在arduino濾波完以后的數(shù)據(jù),我給這個(gè)數(shù)組存的變量名是DataFIR,然后我基本思路是先給這個(gè)數(shù)據(jù)去掉直流分量,然后用fft()這個(gè)函數(shù)給他做了一個(gè)傅里葉變換,然后找到最大值處對(duì)應(yīng)的頻率,乘以60就是我要的每分鐘的心跳次數(shù),但是運(yùn)行結(jié)果差的太多了,竟然是327! ! !求助大佬看看我的程序是哪里有問(wèn)題么! ! !改了好久了嗚嗚嗚!!附件是心電數(shù)據(jù),圖片是代碼截圖和運(yùn)行結(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)+"次"); |
-
幅頻特性.png
(12 KB, 下載次數(shù): 55)
下載附件
2022-12-23 19:10 上傳
振幅圖
-
代碼截圖.png
(22.69 KB, 下載次數(shù): 59)
下載附件
2022-12-23 19:10 上傳
代碼截圖
-
-
DataFIR.zip
2022-12-23 19:09 上傳
點(diǎn)擊文件名下載附件
588 Bytes, 下載次數(shù): 3
心電數(shù)據(jù)
|