function [noise_sel,sig_sel,n_sel,k_sel] = order_bandwidth(Mat_crit,Noise,S_hat,K,Nk)

%##########################################################################
%##########################################################################
% General information:
% 
% Paper:      Fully Adaptive Savitzky-Golay Type Smoothers, submited in October 2018
% 
% Authors:    Maciej Niedzwiecki, Senior Member, IEEE, and Marcin Ciolek,
%             Member, IEEE
% 
% Conference: IEEE International Conference on Acoustics, Speech, and
%             Signal Processing 2019, Brighton, UK
% 
% Both authors are from
% Gdansk University of Technology 
% Faculty of Electronics, Telecommunications and Informatics 
% Department of Automatic Control
% Poland, 80-233 Gdansk, Narutowicza 11/12 street
% 
% Author of MATALB code: Marcin Ciolek
% E-mail: marcin.ciolek@pg.edu.pl
% Date of code verification: 10.2018
% MATLAB R2017b (9.3.0.713579), License Number: 68140
%##########################################################################
%##########################################################################

%##########################################################################
%##########################################################################
% Description:
% The FPE/CV criterion is used for  n and  k selection  
% 
% Input variables:
% Mat_crit - the matrix with the FPE/ the CV statistics, matrix KxNk
% Noise    - the matrix with the residual noise, matrix KxNk
% S_hat    - the matrix with the denoised signals, matrix KxNk
% K        - the number of k parameters
% Nk       - the maximum order
% 
% Output variables:
% noise_sel, sig_sel - selected values from matrices Noise, S_hat
% n_sel,k_sel        - the final decision of  n and k  parameter
%##########################################################################
%##########################################################################

%      min_val   = min(min(Mat_crit));
%     [row,col]  = find(min_val(1) == Mat_crit);
%     
%    [k,Nk] = size(Mat_crit);
    
    min_val = 10^10;
    row = 0;
    col = row;
    
    for i = 1:K
        for j = 1:Nk
            
            
            if Mat_crit(i,j) < min_val
                min_val = Mat_crit(i,j) ;
                row = i;
                col = j;
            end
        end
    end

    noise_sel  = Noise(row,col);
    sig_sel    = S_hat(row,col);
    
    n_sel   = col;
    k_sel   = row;

end