delivered

This commit is contained in:
Diogo Cordeiro 2021-01-01 17:04:06 +00:00
parent 12ff92affa
commit 4ee52579ce
22 changed files with 0 additions and 175 deletions

Binary file not shown.

View File

@ -1,50 +0,0 @@
%% Inicialização do ambiente
clear; close all; clc
%% Exercício 8
% Input
[y, Fs] = audioread("Canto1.mp3"); % Signal and Sampling Frequency
signal = y(:,1);
Fn = Fs/2; % Nyquist Frequency (Hz)
%Ts = 1/Fs;
L = length(signal); % Signal Length
% Find the noise
FTsignal = fft(signal)/L; % Fourier Transform
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
figure(1)
% x is Hz, y is amplitude
plot(Fv, abs(FTsignal(Iv))*2)
grid
% Butterworth Low-Pass Order 7
%[num, den] = butter(7, fc, 'low'); %order, cutoff frequency, type
%[SOS,G] = tf2sos(num, den); % Convert To Second-Order-Section For Stability
%figure(1)
%freqz(SOS, 4096, Fs) % Check Filter Performance
%s_filtered = filtfilt(SOS, G, signal);
fcutlow = 3000;
fcuthigh = 3500;
Wp = [fcutlow fcuthigh]/Fn; % Passband Frequency (Normalised)
Ws = [fcutlow*0.95 fcuthigh/0.95]/Fn; % Stopband Frequency (Normalised)
Rp = 30; % Passband Ripple (dB)
Rs = 30; % Stopband Ripple (dB)
%[n,Wn] = buttord(Wp,Ws,Rp,Rs); % Filter Order
n=2;
Wn=3200/Fn;
[z,p,k] = butter(n, Wn, 'low'); % Filter Design
[sosbp,gbp] = zp2sos(z, p, k); % Convert To Second-Order-Section For Stability
%freqz(sosbp, 2^20, Fs) % Filter Bode Plot
signal_filtered = filtfilt(sosbp, gbp, signal); % Filter Signal
figure(2)
subplot(2,1,1)
plot(signal)
subplot(2,1,2)
plot(signal_filtered);
% output
audiowrite('restored.flac', signal_filtered, Fs);

View File

@ -1,45 +0,0 @@
%% Inicialização do ambiente
clear; close all; clc
%% Exercício 8
[y, Fs] = audioread("Canto1.mp3"); % Signal and Sampling Frequency
s = y(:,1);
L = length(s);
Fn = Fs/2; % Nyquist Frequency
Wp = [150 5800]/Fn; % Normalised Passband
Ws = [ 50 6100]/Fn; % Normalised Stopband
Rp = 1; % Passband Ripple (dB)
Rs = 30; % Stopband Ripple (dB)
[n,Ws] = cheb2ord(Wp,Ws,Rp,Rs); % Chebyshev Type II Order
[b,a] = cheby2(n,Rs,Ws); % IIR Filter Coefficients
[SOS,G] = tf2sos(b,a); % Convert To Second-Order-Section For Stability
figure(1)
freqz(SOS, 4096, Fs) % Check Filter Performance
s_filtered = filtfilt(SOS, G, s);
fcuts = [680 690 710 720 1190 1205 1210 1220 6000 6100]; % Frequency Vector
mags = [1 0 1 0 1 0]; % Magnitude (Defines Passbands & Stopbands)
devs = [0.05 0.01 0.05 0.01 0.05 0.01]; % Allowable Deviations
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs,Fs);
n = n + rem(n,2);
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'scale');
figure(2)
freqz(hh,1, 4096, Fs) % Filter Bode Plot
filt_sig = filtfilt(hh, 1, s); % Filter Signal
FTS = fft(s)/L; % FFT Of Original Signal
FTFS = fft(filt_sig)/L; % FFT Of Filtered Signal
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % FFT Frequency Vector
Iv = 1:length(Fv); % Index Vector
[pks,Frs] = findpeaks(abs(FTS(Iv))*2, Fv, 'MinPeakHeight',0.1); % Find Pure Tone Frequencies
figure(3)
semilogy(Fv, (abs(FTS(Iv)))*2)
hold on
plot(Fv, (abs(FTFS(Iv)))*2)
hold off
grid
axis([0 2500 ylim])
% output
audiowrite('restored.flac', s_filtered, Fs);

View File

@ -1,30 +0,0 @@
%% Inicialização do ambiente
clear; close all; clc
%% Exercício 8
% Input
[y, Fs] = audioread("Canto1.mp3"); % Signal and Sampling Frequency
signal = y(:,1);
Fn = Fs/2; % Nyquist Frequency (Hz)
%Ts = 1/Fs;
L = length(signal); % Signal Length
% Find the noise
FTsignal = fft(signal)/L; % Fourier Transform
Fv = linspace(0, 1, fix(L/2)+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
figure(1)
% x is Hz, y is amplitude
plot(Fv, abs(FTsignal(Iv))*2)
grid
% Filter
signal_filtered = filter(nd_designed_sexy,signal);
figure(2)
subplot(2,1,1)
plot(signal)
subplot(2,1,2)
plot(signal_filtered);
% output
audiowrite('restored.flac', signal_filtered, Fs);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

View File

@ -1,23 +0,0 @@
function Hd = designed_sexy
%DESIGNED_SEXY Returns a discrete-time filter object.
% MATLAB Code
% Generated by MATLAB(R) 9.8 and Signal Processing Toolbox 8.4.
% Generated on: 28-Dec-2020 08:55:51
% Butterworth Lowpass filter designed using FDESIGN.LOWPASS.
% All frequency values are in Hz.
Fs = 44100; % Sampling Frequency
Fpass = 3200; % Passband Frequency
Fstop = 6900; % Stopband Frequency
Apass = 1; % Passband Ripple (dB)
Astop = 80; % Stopband Attenuation (dB)
match = 'stopband'; % Band to match exactly
% Construct an FDESIGN object and call its BUTTER method.
h = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);
% [EOF]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

View File

@ -1,27 +0,0 @@
function Hd = nd_designed_sexy
%ND_DESIGNED_SEXY Returns a discrete-time filter object.
% MATLAB Code
% Generated by MATLAB(R) 9.8 and DSP System Toolbox 9.10.
% Generated on: 28-Dec-2020 11:09:34
% Butterworth Bandpass filter designed using FDESIGN.BANDPASS.
% All frequency values are in Hz.
Fs = 48000; % Sampling Frequency
Fstop1 = 730; % First Stopband Frequency
Fpass1 = 3000; % First Passband Frequency
Fpass2 = 5000; % Second Passband Frequency
Fstop2 = 6800; % Second Stopband Frequency
Astop1 = 50; % First Stopband Attenuation (dB)
Apass = 0.0005; % Passband Ripple (dB)
Astop2 = 50; % Second Stopband Attenuation (dB)
match = 'passband'; % Band to match exactly
% Construct an FDESIGN object and call its BUTTER method.
h = fdesign.bandpass(Fstop1, Fpass1, Fpass2, Fstop2, Astop1, Apass, ...
Astop2, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);
% [EOF]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB