📄 red.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 + -