function signal_win = hanningWin(signal, signal_duration, sampling_freq, pad) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %function signal_win = hanningWin(signal, signal_duration, sampling_freq, pad) % ex.: signal_win = hanningWin(signal, 2, 300, 1) % % Inputs: % - signal: location of the signal to window % - signal_duration: duration of the signal in seconds % - sampling_freq: sampling frequency in Hz % - pad: wether or not add zero padding (0=false; 1=true) % % Output: % - signal_win: signal of interest on which a hanning window was applied % % Author: Guillaume Gibert, guillaume.gibert@ecam.fr % Date: 04/03/2024 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % create the temporal array t=-signal_duration/2:1/sampling_freq:(signal_duration/2)-1/sampling_freq; % window duration is half of signal duration windowDuration = signal_duration/2; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % creates the Hanning time window %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hanningWin = zeros(1, length(t)); % change sampling_freq/4 to shift the signal for l_sample=1:windowDuration*sampling_freq hanningWin(l_sample+signal_duration*sampling_freq/4) = (0.5 - 0.5*cos(2*pi*(l_sample)/(signal_duration*sampling_freq/2))); end figure; title("Hanning Window"); hold on; plot(t,hanningWin); % apply the window on input signal for l_sample=1:length(t) signal_win(l_sample) = signal(l_sample) * hanningWin(l_sample); end figure; title("Original and Windowed signals"); hold on; plot(t, signal); hold on; plot(t, signal_win); frequencySpectrum(signal_win, sampling_freq/2,pad);