Cardiac Output Estimation from Arterial Blood Pressure Waveforms 1.0.0

File: <base>/code/run_scripts/aggdb.m (3,306 bytes)
function []=aggdb(alg)
% creates a aggdb database with using algorithm x. Database structure as
% follows:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% caseid matrix <nx4>
%   col 1: caseid
%       2: pid
%       3: age
%       4: gender
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% tco cell <nx1>
% One cell for each caseid. Within each cell is a <kx3> matrix:
%   col 1:  tco num
%       2:  time [minute], relative to beginning of each record
%       3:  tco  [L/min]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% F <nx1>
%   col 1:  Systolic BP       [mmHg]
%       2:  Diastolic BP      [mmHg]
%       3:  Pulse pressure    [mmHg]
%       4:  Mean pressure     [mmHg]
%       5:  heart rate        [bpm]
%       6:  noisiness (sqi thresh at -3)
%       7:  Area under systole   0.3*sqrt(RR)  method
%       8:  Area under systole   1st min-slope method
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% estco cell <nx11>
%   col 1:  est01_MAP.m      --- Mean pressure
%       2:  est02_WK.m       --- Windkessel 1st order LTI RC circuit model
%       3:  est03_SA.m       --- Systolic area distributed model
%       4:  est04_SAwarner.m --- Warner's SA with time correction
%       5:  est05_Lilj.m     --- Liljestrand's PP/(Psys+Pdias) estimator
%       6:  est06_Herd.m     --- Herd's estimator
%       7:  est07_SAwessCI.m --- Wesseling's SA with impedance correction
%       8:  est08_Pulsion.m  --- Pulsion's non-linear compliance model
%       9:  est09_LidCO.m    --- LidCO's root-mean-square model
%      10:  est10_RCdecay.m  --- RC exponential decay fit
%      11:  est11_mf.m       --- Wesseling's NLTV 3-element model
% within each cell is a <kx2> matrix
%   col 1:  uncalibrated CO
%       2:  std dev of the 1 minute segment
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% sqi cell <nx1>
% One cell for each caseid. Within each cell is a <kx1> vector:
%   - quality of each segment --- 100=best, 0=worst
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

warning off MATLAB:divideByZero

[cid fn] = fnames;
n = length(fn);

if alg==1
    caseid  = zeros(n,4);
    tco     = cell(n,1);
    sqi     = cell(n,1);
    F       = cell(n,1);
    estco   = cell(n,1);

    load agegender
    caseid(:,1) = cid;
    for i=1:n
        i
        x = evco(fn{i},alg,60,0);

        ind = find(agegender(:,1)==cid(i));
        if ind
            age    = agegender(ind,3);
            gender = agegender(ind,4);
        else
            age    = 0;
            gender = 0;
        end

        caseid(i,2) = cpid_convert(cid(i));
        caseid(i,3) = age;
        caseid(i,4) = gender;

        tco{i}          = x(:,1:3);
        estco{i,alg}    = x(:,4:5);
        sqi{i}          = x(:,6);
        F{i}            = x(:,7:end);
    end

    % save results!
    save aggdb caseid tco estco sqi F

else
    load aggdb
    for i=1:n
        i
        for j=1:length(alg)
            x               = evco(fn{i},alg(j),60,0);
            estco{i,alg(j)} = x(:,4:5);
        end
    end
    save aggdb estco -append
end