clear all 
clc
close all 

% Skript linearni pole 
% Havelka

%% vstupni hodnoty 
global N M f_vz c d 

Teplota = 20; %teplota v mistnosti 
c = 331.57 + (0.607*Teplota); % rychlost zvuku [m/s]
f_vz = 20e3; % vzorkovaci frekvence [Hz]
d = 0.2; % vzdalenost mikrofonu [m]  
T = 1.9; % sledovany cas [s]
N = f_vz*T;
%% umisteni mikrofonu + vizualizace 
%  linearni pole
M = 4 ; % pocet mikrofonu

Mikrofonni_pole_lin(); % funkce vykresluje mikrofonni pole v zavislosti na poctu a vzdalenosti senzoru


%% signal
%%% SIGNAL
load('Mikr4_D02_modr_DG0_fvz20khz.mat') %% zde se nahraje soubor se signálem
%%% SIGNAL 

[sig_celk,t_span] = Matice_signal(data); % vytvori matici signalu NxM


%%%% MISTO PRO NOISE SIGNAL
load('Mik4_NOISE.mat')
%%%% MISTO PRO NOISE SIGNAL

[sig_noise,t_noise] = Matice_noise(noise_signal); % vytvori matici noise signalu NxM

%% KALIBRACE 
% urci hladinu detekce pro kazdy signal

[Maximum,Noise_max] = Hladina_Detekce(sig_noise');
Max_S = Maximum + (0.3*Maximum); % zvetseni hladiny detekce o 20%


%% Detekce a filtrace peaku
[peak_s,oblast_s,ts_out,SNR] = Detekce(sig_celk,t_span,Max_S);

%% vykresleni signalu
Vizualizace_signalu(sig_celk,t_span,oblast_s,ts_out,peak_s);

%% DAS - linearni array  

[ANGLE_Beam,alfa_v,RMS] = Beam_DAS(peak_s);

fig3 = figure(3);
fig3.Position = [1 47 735 318];
plot(alfa_v,RMS); % vysledny uhel 
title('VYSLEDEK');
xlabel('Angle [°]');
ylabel('RMS [-]');

%% TDOA - linearni array 

[ANGLE_X] = xcorr_update_linearni(peak_s);


fprintf('Vyhodnoceni uhlu metodou TDOA \n Tento uhel je: %0.5g \n \n ',ANGLE_X);
fprintf('Vyhodnoceni uhlu metodou BEAMFORMING \n Tento uhel je: %0.5g \n',ANGLE_Beam);
