⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 red.m

📁 使用C8051F实现脉搏及血氧饱和度测量 包括均值滤波
💻 M
字号:
fid=fopen('c:\record.txt')
Data=fscanf(fid,'%d')
fclose(fid);
datared=Data(1:length(Data)/2)'
dataired=Data(length(Data)/2+1:length(Data))'
%绘制原始数据
subplot(3,1,1)
plot(datared)
axis([1 length(datared) 0 255])
%绘制整形数据
x=(datared-min(datared)).*255/(max(datared)-min(datared))
y=zeros(1,length(x)+7)
for i=0:1:7
    temp=[zeros(1,i),x,zeros(1,7-i)]
    y=y+temp
end
y=round(y./8)
for i=1:1:7
    y(i)=x(i)
end
y=y( 1:length(x) )
subplot(3,1,2)
plot(y)
axis([1 length(y) 0 255])
%绘制微分阈值数据
s=zeros(1,length(y))
H=30
k=7
for i=k+1:length(y)
    if y(i-k)-y(i)>H
        s(i)=y(i-k)-y(i)
    end 
end
subplot(3,1,3)
plot(s)
axis([1 length(y) 0 max(s)+H/2])
%计算周期,极大极小值
d=0
j=1;
peakvalue=0;
for i=1:length(s)
    if s(i)>peakvalue
        peakvalue=s(i);
        d(j)=i;
    end
    if peakvalue>0 && s(i)<H
        peakvalue=0  
        j=j+1;
    end
end
td=0
for i=1:j-2
    td=td+d(i+1)-d(i)
end
FreqRed=round( 12000/( td/(length(d)-1) ) )

minvalue=255;
maxvalue=0;
minpos=0;
maxpos=0;
for i=1:length(d)-1
    minvalue(i)=255;
    maxvalue(i)=0;
    minpos(i)=0;
    maxpos(i)=0;
    for j=d(i):1:d(i+1)-1
        if y(j)<minvalue(i)
            minvalue(i)=y(j)
            minpos(i)=j
        end
        if y(j)>maxvalue(i)
            maxvalue(i)=y(j)
            maxpos(i)=j
        end
    end
end
dm=0
for i=1:length(maxpos)
    dm=dm+datared( maxpos(i) )-datared( minpos(i) )
end
AC_Red=dm./length(maxpos)
%绘制周期线
mar=zeros(1,length(y))
for i=1:length(d)
    mar(d(i))=y(d(i))
end
subplot(3,1,2)
hold on
stairs(mar,'Color','Green')
axis([1 length(y) 0 255])
%绘制极小值线
mar=zeros(1,length(y))
for i=1:length(d)-1
    mar(minpos(i))=y(minpos(i))
end
subplot(3,1,2)
hold on
stairs(mar,'Color','Yellow')
axis([1 length(y) 0 255])
%绘制极大值线
mar=zeros(1,length(y))
for i=1:length(d)-1
    mar(maxpos(i))=y(maxpos(i))
end
subplot(3,1,2)
hold on
stairs(mar,'Color','Red')
axis([1 length(y) 0 255])

% x=y
% y=zeros(1,length(datared))
% for n=1:3
% y(n)=x(n);
% end
% for n=4:1:length(datared)-3
% y(n)=( -2*x(n-3)+3*x(n-2)+6*x(n-1)+7*x(n)+6*x(n+1)+3*x(n+2)-2*x(n+3) )/21
% end
% subplot(2,1,2)
% plot(y)
% axis([1 length(y) 0 255])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -