【心電信號(hào)】基于matlab實(shí)現(xiàn)心音診斷系統(tǒng)含GUI
【心電信號(hào)】基于matlab實(shí)現(xiàn)心音診斷系統(tǒng)含GUI
TT_Matlab
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)、信號(hào)處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,完整matlab代碼或者程序定制加qq1575304183。
1 簡介
心血管疾病已成為導(dǎo)致人類死亡最主要的原因,是世界范圍內(nèi)的臨床醫(yī)學(xué)和人類社會(huì)負(fù)擔(dān).在臨床方面:心臟性猝死,孕產(chǎn)婦心臟健康問題,麻醉安全問題與心臟都有著直接或間接的聯(lián)系.目前,臨床關(guān)于心臟性猝死的預(yù)警,心臟監(jiān)護(hù)室和危重病人監(jiān)護(hù),麻醉安全監(jiān)測(cè)項(xiàng)目中都沒有對(duì)心臟儲(chǔ)備指標(biāo)的監(jiān)測(cè),忽略了從心力,心律,心率等幾個(gè)方面同時(shí)觀察研究.因此,開展基于"心音和心電綜合分析"的研究具有重要的學(xué)術(shù)意義和實(shí)用價(jià)值.本文從心音位置、心音峰值、心音門限等方面進(jìn)行心音的診斷。
2 部分代碼
function varargout = xingyingzhengduan(varargin)
% XINGYINGZHENGDUAN M-file
for
xingyingzhengduan.fig
% XINGYINGZHENGDUAN, by itself, creates a new XINGYINGZHENGDUAN
or
raises the existing
% singleton*.
%
% H = XINGYINGZHENGDUAN returns the handle to a new XINGYINGZHENGDUAN
or
the handle to
% the existing singleton*.
%
% XINGYINGZHENGDUAN(
’CALLBACK’
,hObject,eventData,handles,...) calls the local
% function named CALLBACK
in
XINGYINGZHENGDUAN.M with the given input arguments.
%
% XINGYINGZHENGDUAN(
’Property’
,
’Value’
,...) creates a new XINGYINGZHENGDUAN
or
raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before xingyingzhengduan_OpeningFcn gets called. An
% unrecognized property name
or
invalid value makes property application
% stop. All inputs are passed to xingyingzhengduan_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE
’s Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help xingyingzhengduan
% Last Modified by GUIDE v2.5 03-May-2021 02:33:20
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(’
gui_Name
’, mfilename, ...
’
gui_Singleton
’, gui_Singleton, ...
’
gui_OpeningFcn
’, @xingyingzhengduan_OpeningFcn, ...
’
gui_OutputFcn
’, @xingyingzhengduan_OutputFcn, ...
’
gui_LayoutFcn
’, [] , ...
’
gui_Callback
’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before xingyingzhengduan is made visible.
function xingyingzhengduan_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to xingyingzhengduan (see VARARGIN)
% Choose default command line output for xingyingzhengduan
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes xingyingzhengduan wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = xingyingzhengduan_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
%==========================================================================%
handles.DoorHeartSoundsAfterShann = DoorPa;
handles.DoorHeartSoundsAfterShannT = (1:1:length(DoorPa)).*22/2205;
handles.NumSick = 0;
if (handles.numCanyonMax3 >2 ||handles.numCanyonMin3 >3)||((handles.numCanyonMax3 ==1) && (handles.numCanyonMax3+handles.numCanyonMin3)>4) %設(shè)置分裂基準(zhǔn)數(shù)
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) = ’
心音存在分裂
’;
end
if (handles.numCanyonMax5 >1 ||handles.numCanyonMin5 >3)||((handles.numCanyonMax5 ==1) && (numCanyonMax5+numCanyonMin5)>3) %設(shè)置分裂基準(zhǔn)數(shù)
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) =’
心音存在嚴(yán)重分裂
’;
end
if handles.S1RangeAverage<0.08
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) =’
第一心音狹窄
’;
else if handles.S1RangeAverage>0.12
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) =’
第一心音肥厚
’;
end
end
if handles.S2RangeAverage<0.08
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) = ’
第二心音狹窄
’;
else if handles.S2RangeAverage>0.12
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) =’
第二心音肥厚
’;
end
end
if (handles.S1AndS2DoorRange<0.3)||(handles.S1AndS2DoorRange>0.5)
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) =’
第一二心音間隔異常
’;
end
if (handles.S1ToS1DoorRange<0.7)||(handles.S1AndS2DoorRange>0.9)
handles.NumSick = handles.NumSick+1;
handles.SickDescribe(handles.NumSick,1:9) =’
心動(dòng)周期間隔異常
’;
end
set(handles.describe, ’
string
’ , handles.SickDescribe);
if handles.NumSick>2
set(handles.result, ’
string
’ , ’
心音異常--僅供參考
’);
set(handles.advise, ’
string
’ , ’
請(qǐng)根據(jù)自身情況盡早去醫(yī)院檢查--僅供參考
’);
else
set(handles.result, ’
string
’ , ’
心音正常--僅供參考
’);
set(handles.advise, ’
string
’ , ’
您很健康,祝您身體健康!--僅供參考
’);
end
guidata(hObject , handles);
%=========================================================================%
% --- Executes on button press in pushbutton19.
function pushbutton19_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton19 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in Shannon.
function Shannon_Callback(hObject, eventdata, handles)
% hObject handle to Shannon (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if(get(hObject,’
Value
’)==get(hObject,’
Max
’)) %被選中了的操作
set(findobj(’
Tag
’,’
Threshold
’),’
enable
’,’
off
’);
set(findobj(’
Tag
’,’
DownThreshold
’),’
enable
’,’
off
’);
set(findobj(’
Tag
’,’
ChangeThreshold
’),’
enable
’,’
off
’);
hold off;
plot(handles.axes1,handles.HeartSoundsAfterShanT,handles.HeartSoundsAfterShan);
title(’
香農(nóng)能量分布
’);
else
set(findobj(’
Tag
’,’
Threshold
’),’
enable
’,’
on
’);
set(findobj(’
Tag
’,’
DownThreshold
’),’
enable
’,’
on
’);
set(findobj(’
Tag
’,’
ChangeThreshold
’),’
enable
’,’
on
’);
end
% Hint: get(hObject,’
Value
’) returns toggle state of Shannon
% --- Executes on button press in S1OrS2Door.
function S1OrS2Door_Callback(hObject, eventdata, handles)
% hObject handle to S1OrS2Door (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if(get(hObject,’
Value
’)==get(hObject,’
Max
’)) %被選中了的操作
set(findobj(’
Tag
’,’
Threshold
’),’
enable
’,’
on
’);
set(findobj(’
Tag
’,’
DownThreshold
’),’
enable
’,’
on
’);
set(findobj(’
Tag
’,’
ChangeThreshold
’),’
enable
’,’
on
’);
hold off;
plot(handles.axes1,handles.DoorHeartSoundsAfterShannT,handles.DoorHeartSoundsAfterShann);
axis([0 , max(handles.DoorHeartSoundsAfterShannT),-0.2 ,1.2]);title(’
S1,S2時(shí)間門
’);
else
set(findobj(’
Tag
’,’
Threshold
’),’
enable
’,’
of
’);
set(findobj(’
Tag
’,’
DownThreshold
’),’
enable
’,’
of
’);
set(findobj(’
Tag
’,’
ChangeThreshold
’),’
enable
’,’
of
’);
end
% Hint: get(hObject,’
Value
’) returns toggle state of S1OrS2Door
% --- Executes on button press in NoiseDown.
function NoiseDown_Callback(hObject, eventdata, handles)
% hObject handle to NoiseDown (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if(get(hObject,’
Value
’)==get(hObject,’
Max
’)) %被選中了的操作
set(findobj(’
Tag
’,’
Threshold
’),’
enable
’,’
off
’);
set(findobj(’
Tag
’,’
DownThreshold
’),’
enable
’,’
off
’);
set(findobj(’
Tag
’,’
ChangeThreshold
’),’
enable
’,’
off
’);
hold off;
plot(handles.axes1,handles.HeartSoundsNoiseDownT,handles.HeartSoundsNoiseDown);title(’
強(qiáng)制降噪后
’);
else
set(findobj(’
Tag
’,’
Threshold
’),’
enable
’,’
on
’);
set(findobj(’
Tag
’,’
DownThreshold
’),’
enable
’,’
on
’);
set(findobj(’
Tag
’,’
ChangeThreshold
’),’
enable
’,’
on
’);
end
% Hint: get(hObject,’
Value
’) returns toggle state of NoiseDown
function DownThreshold_Callback(hObject, eventdata, handles)
% hObject handle to DownThreshold (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,’
String
’) returns contents of DownThreshold as text
% str2double(get(hObject,’
String
’)) returns contents of DownThreshold as a double
% --- Executes during object creation, after setting all properties.
function DownThreshold_CreateFcn(hObject, eventdata, handles)
% hObject handle to DownThreshold (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,’
BackgroundColor
’), get(0,’
defaultUicontrolBackgroundColor
’))
set(hObject,’
BackgroundColor
’,’
white
’);
end
% --- Executes on button press in ViewTogetherNoiseAndOriganl.
function ViewTogetherNoiseAndOriganl_Callback(hObject, eventdata, handles)
% hObject handle to ViewTogetherNoiseAndOriganl (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
hold off;
plot(handles.axes1,handles.HeartSoundsOriginalCutT ,handles.HeartSoundsOriginalCut,’
r--
’);
axis([0,max(handles.HeartSoundsOriginalCutT) ,min(handles.HeartSoundsOriginalCut)*1.1, max(handles.HeartSoundsOriginalCut)*1.1]);
hold on;
plot(handles.axes1,handles.HeartSoundsNoiseDownT,handles.HeartSoundsNoiseDown);
% --- Executes on button press in ViewTogetherShanAndDoor.
function ViewTogetherShanAndDoor_Callback(hObject, eventdata, handles)
% hObject handle to ViewTogetherShanAndDoor (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
hold off;
plot(handles.axes1,handles.HeartSoundsAfterShanT,handles.HeartSoundsAfterShan);hold on;
plot(handles.axes1,handles.DoorHeartSoundsAfterShannT,handles.DoorHeartSoundsAfterShann,’
g--
’);
axis([0 , max(handles.DoorHeartSoundsAfterShannT),min(handles.HeartSoundsAfterShan) ,max(handles.HeartSoundsAfterShan)]);title(’
S1,S2時(shí)間門
’);
% --- Executes on button press in Db6Division.
function Db6Division_Callback(hObject, eventdata, handles)
% hObject handle to Db6Division (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
figure(2),subplot(221),plot(handles.td1,handles.cd1) ,axis([0,max(handles.td1) ,-handles.cmax , handles.cmax]),...
title(’
cd1:
551
--
1102
Hz
’),subplot(222 ) , plot(handles.td2 ,handles.cd2), axis([0,max(handles.td1) ,-handles.cmax , handles.cmax]),...
title(’
cd2:
275
--
551
Hz
’),subplot(223),plot(handles.td3,handles.cd3),axis([0,max(handles.td1) ,-handles.cmax , handles.cmax]),title(’
cd3:
138
--
275
Hz
’),...
subplot(224),plot(handles.ta3,handles.ca3),axis([0,max(handles.td1) ,-handles.cmax , handles.cmax]),title(’
ca3:
0
--
138
Hz
’);
% --- Executes during object creation, after setting all properties.
function uipanel5_CreateFcn(hObject, eventdata, handles)
% hObject handle to uipanel5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
3 仿真結(jié)果
4 參考文獻(xiàn)
[1]王東. 基于心音和心電的心功能檢測(cè)系統(tǒng)研究[D]. 重慶大學(xué), 2010.
博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)、信號(hào)處理、元胞自動(dòng)機(jī)、圖像處理、路徑規(guī)劃、無人機(jī)等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。
部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除。
-
2023年各省最新電價(jià)一覽!8省中午執(zhí)行谷段電價(jià)! 2023-01-03
-
PPT導(dǎo)出高分辨率圖片的四種方法 2022-09-22
-
全國消防救援總隊(duì)主官及簡歷(2023.2) 2023-02-10
-
盤點(diǎn) l 中國石油大慶油田現(xiàn)任領(lǐng)導(dǎo)班子 2023-02-28
-
我們的前輩!歷屆全國工程勘察設(shè)計(jì)大師完整名單! 2022-11-18
-
關(guān)于某送變電公司“4·22”人身死亡事故的快報(bào) 2022-04-26
