diff --git a/matlab/tfgm/tf_tools/compute_ambiguity_function.m b/matlab/tfgm/tf_tools/compute_ambiguity_function.m
new file mode 100644
index 0000000000000000000000000000000000000000..313667488ae6c749e57a2a2a7759b1bd3932c5f6
--- /dev/null
+++ b/matlab/tfgm/tf_tools/compute_ambiguity_function.m
@@ -0,0 +1,27 @@
+function w = compute_ambiguity_function(w, dgt ,apply_fftshift)
+%% x = compute_ambiguity_function(x, dgt ,fftshift_)
+% Compute the ambiguity function of the window
+%
+% Inputs:
+%     - w (nd array): vector
+%     - dgt (handle): DGT operator. see utils/get_stft_operators.m
+%     -apply_fftshift: Boolean If true, shift the window in time before 
+%                       computing its DGT.
+%
+%Author: Marina KREME
+%%
+
+switch apply_fftshift
+    
+    case 'True'
+        w = dgt(fftshift(w));
+        
+    case 'False'
+        w = dgt(w);
+    otherwise
+        fprintf('Incorrect value fftshift_\n')
+        
+end
+
+
+
diff --git a/matlab/tfgm/tf_tools/generate_rectangular_mask.m b/matlab/tfgm/tf_tools/generate_rectangular_mask.m
new file mode 100644
index 0000000000000000000000000000000000000000..21555acacf77755cd4242dfcaced2093c8654554
--- /dev/null
+++ b/matlab/tfgm/tf_tools/generate_rectangular_mask.m
@@ -0,0 +1,32 @@
+function mask = generate_rectangular_mask(nbins, hop, sig_len, t_lim, f_lim)
+%% GENERATE_RECTANGULAR_MASK
+% Generate a rectangular time-frequency mask
+% mask = generate_rectangular_mask(nbins, hop, sig_len, t_lim, f_lim)
+% Inputs:
+%    - nbins: numbers of frequency bins (int)
+%    - hop : hop size (int)
+%    - sig_len: signal length (int)
+%    - t_lim :  time boundaries of the mask
+%    - f_lim : frequency boundaries of the mask
+%
+% Outputs:
+%     - mask : the boolean 2D array containing the time-frequency mask (True values)
+%
+% Author : A. Marina KREME
+%%
+
+
+M = nbins/2 +1;
+N = sig_len/hop;
+
+if size(f_lim,2)~=2 || size(t_lim,2)~=2
+    error("Incorrect value. f_lim or t_lim  must be an interval")
+end
+
+mask = zeros(M,N);
+f_lim  = round(f_lim*size(mask,1));
+t_lim =round(t_lim*size(mask,2));
+
+mask(f_lim(1):f_lim(2),t_lim(1):t_lim(2))=1;
+
+end
diff --git a/matlab/tfgm/tf_tools/plot_ambiguity_function.m b/matlab/tfgm/tf_tools/plot_ambiguity_function.m
new file mode 100644
index 0000000000000000000000000000000000000000..1442a015fa0246ca993d839115660bc1e25bf457
--- /dev/null
+++ b/matlab/tfgm/tf_tools/plot_ambiguity_function.m
@@ -0,0 +1,31 @@
+function plot_ambiguity_function(x, dgt , dgt_params, signal_params,...,
+    dynrange, apply_fftshift)
+
+%% plot_ambiguity_function(x, dgt , dgt_params, signal_params, dynrange)
+%
+% This function compute and plot ambiguity function for a given vector
+%
+% Inputs:
+%     - x: signal
+%     -dgt: Gabor transform operator
+%     - dgt_params: Signals parameters(sig_len, fs)
+%     - signal_params: Discrete Gabor Transform parameters(hop, nbins,win, ect..)
+%     - dynrange : dynamic range (optional)
+%
+% Author: Marina KREME
+%%s
+
+apply_fftshift = [upper(apply_fftshift(1)),apply_fftshift(2:end)];
+if nargin==4
+    dynrange = 100;
+    apply_fftshift='True';
+end
+if nargin==5
+    apply_fftshift='True';
+end
+
+x = compute_ambiguity_function(x, dgt ,apply_fftshift);
+plotdgtreal(x, dgt_params.hop, dgt_params.nbins, signal_params.fs,'dynrange', dynrange)
+
+
+end