

% Vyber kalibracnich souboru

% zobrazeni standardniho dialogu pro vyber souboru
[filename, pathname] = uigetfile( {'*.wav'; 'Zvukové soubory wav';'*.*';
    'Vsechny soubory'}, 'Výběr souboru', 'MultiSelect', 'on');

% ukonceni funkce, pokud nebyl vybran zadny soubor
if isequal(filename,0) || isequal(pathname,0) % uzivatel kliknul na Zrusit
    disp('.... zrušeno');
    return;
end;

% zjisteni, zda byl vybran jeden soubor nebo vice
if iscellstr(filename)
    multiselect = length(filename);
else
    multiselect = 1;
    filename = {filename};
end;

% smycka zpracovani jednotlivych vybranych souboru
for i = 1:multiselect,

    % nacteni souboru
    % do fs se ulozi vzorkovaci kmitocet, do bits se ulozi pocet bitu
    % h bude matice, kde sloupce jsou vzorky jednotlivych kanalu
    
    [h, fs, bits] = wavread( fullfile( pathname, filename{i}));
    h = h(:,1);   % pouze jeden kanal       

    rmskalib(i) = sqrt(mean(h.^2)); % vypocet efektivni hodnoty kalibracnich signalu
    prevracena(i) = 1 / rmskalib(i); % prevracena hodnota
end;




% Vyber souboru se zaznamy pozounu 

[filename, pathname] = uigetfile( {'*.wav'; 'Zvukové soubory wav';'*.*';
    'Vsechny soubory'}, 'Výběr souboru', 'MultiSelect', 'on');

% ukonceni funkce, pokud nebyl vybran zadny soubor
if isequal(filename,0) || isequal(pathname,0) % uzivatel kliknul na Zrusit
    disp('.... zrušeno');
    return;
end;

% zjisteni, zda byl vybran jeden soubor nebo vice
if iscellstr(filename)
    multiselect = length(filename);
else
    multiselect = 1;
    filename = {filename};
end;

% zpracovani jednotlivych zaznamu pozounu
for i = 1:multiselect,

    [h, fs, bits] = wavread( fullfile( pathname, filename{i}));
    h = h(:,1);
    normal = prevracena(i) * h;  % normalizace zaznamu
    rmsnorm(i) = sqrt(mean(normal.^2)) % efektivni hodnota normalizovanych zaznamu
end;

pom = rmsnorm(5)    % ulozeni efektivni hodnoty ve smeru 0°
rmsnorm = rmsnorm./pom  % ziskani relativnich hodnot ve vsech smerech


uhly = [0 22.5 45 67.5 90 112.5 135 157.5 180];

uhlyrad = uhly * pi / 180;   % prepocet na radiany
polar(uhlyrad, fliplr(rmsnorm), '-r')  % vykresleni polarniho grafu
ylim([0 1.5]) % omezeni vykresleni horni poloviny grafu

hold on;

% Vyber souboru se zaznamy pozounu 

[filename, pathname] = uigetfile( {'*.wav'; 'Zvukové soubory wav';'*.*';
    'Vsechny soubory'}, 'Výběr souboru', 'MultiSelect', 'on');

% ukonceni funkce, pokud nebyl vybran zadny soubor
if isequal(filename,0) || isequal(pathname,0) % uzivatel kliknul na Zrusit
    disp('.... zrušeno');
    return;
end;

% zjisteni, zda byl vybran jeden soubor nebo vice
if iscellstr(filename)
    multiselect = length(filename);
else
    multiselect = 1;
    filename = {filename};
end;

% zpracovani jednotlivych zaznamu pozounu
for i = 1:multiselect,

    [h, fs, bits] = wavread( fullfile( pathname, filename{i}));
    h = h(:,1);
    normal = prevracena(i) * h;  % normalizace zaznamu
    rmsnorm(i) = sqrt(mean(normal.^2)) % efektivni hodnota normalizovanych zaznamu
end;

pom = rmsnorm(5)    % ulozeni efektivni hodnoty ve smeru 0°
rmsnorm = rmsnorm./pom  % ziskani relativnich hodnot ve vsech smerech


uhly = [0 22.5 45 67.5 90 112.5 135 157.5 180];

uhlyrad = uhly * pi / 180;   % prepocet na radiany
polar(uhlyrad, fliplr(rmsnorm), ':b')  % vykresleni polarniho grafu
ylim([0 1.5]) % omezeni vykresleni horni poloviny grafu

hold on;


% Vyber souboru se zaznamy pozounu 

[filename, pathname] = uigetfile( {'*.wav'; 'Zvukové soubory wav';'*.*';
    'Vsechny soubory'}, 'Výběr souboru', 'MultiSelect', 'on');

% ukonceni funkce, pokud nebyl vybran zadny soubor
if isequal(filename,0) || isequal(pathname,0) % uzivatel kliknul na Zrusit
    disp('.... zrušeno');
    return;
end;

% zjisteni, zda byl vybran jeden soubor nebo vice
if iscellstr(filename)
    multiselect = length(filename);
else
    multiselect = 1;
    filename = {filename};
end;

% zpracovani jednotlivych zaznamu pozounu
for i = 1:multiselect,

    [h, fs, bits] = wavread( fullfile( pathname, filename{i}));
    h = h(:,1);
    normal = prevracena(i) * h;  % normalizace zaznamu
    rmsnorm(i) = sqrt(mean(normal.^2)) % efektivni hodnota normalizovanych zaznamu
end;

pom = rmsnorm(5)    % ulozeni efektivni hodnoty ve smeru 0°
rmsnorm = rmsnorm./pom  % ziskani relativnich hodnot ve vsech smerech


uhly = [0 22.5 45 67.5 90 112.5 135 157.5 180];

uhlyrad = uhly * pi / 180;   % prepocet na radiany
polar(uhlyrad, fliplr(rmsnorm), '-.g')  % vykresleni polarniho grafu
ylim([0 1.5]) % omezeni vykresleni horni poloviny grafu
legend({'Barokní pozoun';'Moderní pozoun';'Plastový pozoun'});  
title('Směrová vyzařovací charakteristika tónu d1');

