% mv240_ft.mlx
% Fouriertransformation von Luftschalldaten
%
% Dipl.-Ing. Armin Rohnen LbA
% Hochschule München - Munich University of Applied Sciences
% Faktultät 03 - Labor für Schwingungstechnik und Maschinendanmik
% Dachauer Straße 98b, 80335 München
% eMail: rohnen@hm.edu oder armin@rohnen.net
%
% München, 26. Februar 2022
%
% Lizenzbedingungen:
% Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder (nach Ihrer Option) jeder späteren Version.
% Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
% GNU General Public License http://www.gnu.org/licenses/    http://www.gnu.de/documents/gpl.de.html
%

clear;
load('20220225_Casablanca.mat');

plot(time, data)
title('Zeitsignal der Luftschallmessung')
ylabel('Schalldruck in Pa')
xlabel('Zeit in s')
df = 4;
N = ceil(fs/df);
o = ceil(2/3*N);
w = hann(N);
FM = sum(w)/N;
data_A = afilter(data, fs);

[s,f,t,~] = spectrogram(data_A, w, o, N, fs);
Sx = 2*abs(s/N)/FM;

mesh(f',t',20*log10(Sx'/(20e-6)))
colormap(jet);
colorbar;
caxis([30 90])
axis([0 5000 0 20 30 90])
title('Frequenzspektrum')
xlabel('Frequenz in Hz')
ylabel('Zeit in s')
zlabel('Schalldruck in dB(A)')
view(15,45)
%view(70,-25)

fView = 1400;
nView = ceil(fView/df)+1;

plot(t, 20*log10(Sx(nView, :)/20e-6))
title('Frequenzschnitt bei 1400 Hz')
ylabel('Schalldruck in dB(A)')
xlabel('Zeit in s')
axis([0 20 30 90])
tView = 10.3;
nView = ceil(tView/(t(1,10)-t(1,9)))+1;
plot(f, 20*log10(Sx(:, nView)/20e-6))
axis([0 5000 30 90])
title('Zeitschnitt bei 10.3 s')
ylabel('Schalldruck in dB(A)')
xlabel('Frequenz in Hz')