Биорадар: Часть 2. Обучение ИНС реконструкции ЭКГ
Author
using PyCall
using MAT
include("utils.jl")
np = pyimport("numpy");
nk = pyimport("neurokit2");
function prepareData(path::AbstractString, save_path::AbstractString, order_filter)
i, q, fs_radar, ecg_data1, ecg_data2, fs_ecg, filename = load_data(path);
cur_ecg = vec(ecg_data2);
I_comp, Q_comp, sigma, range_ = EllipseReconstruction(i, q);
radar_respiration, radar_pulse, radar_heartsound, radar_heartsound_denoise = getVitalSignals(range_, fs_radar, order_filter);
acc = np.gradient(np.gradient(radar_pulse)) * fs_radar^2
radar_pulse_acc = Filter(acc, 4, 20, fs_radar, 6);
ecg_cleaned = nk.ecg_clean(cur_ecg, sampling_rate=fs_ecg)
data_dict = Dict("radar"=>radar_pulse_acc, "ecg"=>ecg_cleaned, "fs_radar"=> fs_radar, "fs_ecg"=>fs_ecg)
save_path = joinpath(save_path, filename)
matwrite(save_path, data_dict)
end
function loadDataNoPrepare(path::AbstractString, save_path::AbstractString)
i, q, fs_radar, ecg_data1, ecg_data2, fs_ecg, filename = load_data(path);
cur_ecg = vec(ecg_data2);
signal = Complex.(i, q);
sigma = angle.(signal);
ecg_cleaned = nk.ecg_clean(cur_ecg, sampling_rate=fs_ecg)
data_dict = Dict("radar"=>sigma, "ecg"=>ecg_cleaned, "fs_radar"=> fs_radar, "fs_ecg"=>fs_ecg)
save_path = joinpath(save_path, filename)
matwrite(save_path, data_dict)
end;