Скачиваний:
28
Добавлен:
08.04.2022
Размер:
4.13 Кб
Скачать
% головная программа как функция
function R11_P1()
global hAxes3 hAxes5 RR4Hz Fs rb1 hSlider6 hEdit7
% создание рабочего окна
figure('Position',[200,50,1000,700])
% создание полей для вывода графиков
hAxes3=axes('Units','pixels','Position',[50,50,250,250]);
hAxes5=axes('Units','pixels','Position',[500,50,250,250]);
hAxes2=axes('Units','pixels','Position',[50,330,900,150]);
hAxes1=axes('Units','pixels','Position',[50,510,900,150]);
% создание группы "радиокнопок"
hGroup4=uibuttongroup('Units','pixels','Position',[330 240 95 60]);
rb1=uicontrol('Style','Radio','String','Periodogram',...
'Position',[5 10 90 20],'parent',hGroup4);
rb2=uicontrol('Style','Radio','String','Welch method',...
'Position',[5 30 90 20],'parent',hGroup4);
hR11_P2=@R11_P2;
set(hGroup4,'SelectionChangeFcn',hR11_P2);
set(hGroup4,'SelectedObject',[]);
% создание ползунка
hSlider6=uicontrol('Style','Slider','Position',[780 280 100 20]);
hR11_P3=@R11_P3;
set(hSlider6,'Callback',hR11_P3);
set(hSlider6,'Min',0,'Max',20);
% создание поля редактирования
hEdit7=uicontrol('Style','edit','Position',[810 250 70 20],...
'Backgroundcolor',[1 1 1],'HorizontalAlignment','left');
hTxt8=uicontrol('Style','text','String','P =',...
'Position',[780 245 30 20],'Backgroundcolor',[1 1 1]);
% построение ритмограммы в 1 поле
RR=load('R11-04.txt');
NRR=length(RR);
axes(hAxes1)
RRmax=max(RR)*1.2;
set(hAxes1,'XLim',[0 NRR],'YLim',[0 RRmax]);
hold on
for i=1:NRR
x(1)=i;
x(2)=i;
R(1)=0;
R(2)=RR(i);
plot(x,R);
end
% расчет графика равномерно дисректизированного сигнала
t=0;
for i=1:NRR
t=t+RR(i);
tRR(i)=t;
end
sRR=csaps(tRR,RR,1);
% вывод графика равномерно дисректизированного сигнала во 2 поле
axes(hAxes2)
Fs=4;
T=1/Fs;
tsRR=0:T:tRR(NRR);
RR4Hz=ppval(sRR,tsRR);
set(hAxes2,'XLim',[0 tRR(NRR)],'YLim',[0 RRmax]);
hold on
plot(tsRR,RR4Hz);
end

% функция для расчета спектра и показателей ВСР
function R11_P2(h,Sel)
global hAxes3 RR4Hz Fs rb1
nfft=2048;
RR0=detrend(RR4Hz)*1000;
df=Fs/nfft;
Fmax=0.5;
Nf=fix(Fmax/df);
% расчет спектра и построение СПМ в 3 поле
axes(hAxes3)
if Sel.NewValue==rb1
window=hamming(length(RR4Hz));
[Pxx,f]=periodogram(RR0,window,nfft,Fs);
plot(f(1:Nf),Pxx(1:Nf))
else
Nw=1000;
noverlap=100;
window=hamming(Nw);
[Pxx,f]=pwelch(RR0,window,noverlap,nfft,Fs);
plot(f(1:Nf),Pxx(1:Nf))
end
Ymax=max(Pxx(1:Nf))*1.3;
set(hAxes3,'YLim',[0 Ymax]);
% расчет показателей VLF, LF, HF
flim=[0.003 0.04 0.15 0.4];
VLF=0, LF=0, HF=0;
i=0, f=0;
while f<=flim(4)
f=df*i;
i=i+1;
if f>=flim(1) && f<flim(2)
VLF=VLF+Pxx(i)*df;
elseif f>=flim(2) && f<flim(3)
LF=LF+Pxx(i)*df;
elseif f>=flim(3)
HF=HF+Pxx(i)*df;
end
end
% вывод показателей VLF, LF, HF
VLF=round(VLF);
dy=Ymax/10;
text(0.3,Ymax-dy,['VLF=' num2str(VLF) 'ms^2']);
LF=round(LF);
dy=Ymax/10;
text(0.3,Ymax-2*dy,['LF=' num2str(LF) 'ms^2']);
HF=round(HF);
dy=Ymax/10;
text(0.3,Ymax-3*dy,['LF=' num2str(HF) 'ms^2']);
end

% расчет спектра АР с помощью ползунка
function R11_P3(h,Sel)
global hSlider6 hEdit7 RR4Hz Fs hAxes5
P=round(get(hSlider6,'Value'));
if P==0
P=1;
end
set(hEdit7,'String',num2str(P));
nfft=2048;
RR0=detrend(RR4Hz)*1000;
df=Fs/nfft;
Fmax=0.5;
Nf=fix(Fmax/df);
% расчет и вывод СПМ по методу Берга в 5 поле
axes(hAxes5)
[Pxx,f]=pburg(RR0,P,nfft,Fs);
plot(f(1:Nf),Pxx(1:Nf))
Ymax=max(Pxx(1:Nf))*1.3;
set(hAxes5,'YLim',[0 Ymax]);
% расчет показателей VLF, LF, HF
flim=[0.003 0.04 0.15 0.4];
VLF=0, LF=0, HF=0;
i=0, f=0;
while f<=flim(4)
f=df*i;
i=i+1;
if f>=flim(1) && f<flim(2)
VLF=VLF+Pxx(i)*df;
elseif f>=flim(2) && f<flim(3)
LF=LF+Pxx(i)*df;
elseif f>=flim(3)
HF=HF+Pxx(i)*df;
end
end
% вывод показателей VLF, LF, HF
VLF=round(VLF);
dy=Ymax/10;
text(0.3,Ymax-dy,['VLF=' num2str(VLF) 'ms^2']);
LF=round(LF);
dy=Ymax/10;
text(0.3,Ymax-2*dy,['LF=' num2str(LF) 'ms^2']);
HF=round(HF);
dy=Ymax/10;
text(0.3,Ymax-3*dy,['LF=' num2str(HF) 'ms^2']);
end
Соседние файлы в папке Лаба 11