    function [lambda_d_lookup,lambda_q_lookup,Id_lookup,Iq_lookup,lambda_dq_I_dq_data]=Flux2Current_lookup(i_d,i_q,lambda_d,lambda_q,lambda_m,Input_refine,Output_refine,windowSize,bool)
    %
    %    Copyright (c) 2014 by Plexim GmbH All rights reserved.
    %
    %    A free license is granted to anyone to use this software for any legal
    %    non safety-critical purpose, including commercial applications,
    %    provided that: 1) IT IS NOT USED TO DIRECTLY OR INDIRECTLY COMPETE
    %    WITH PLEXIM, and 2) THIS COPYRIGHT NOTICE IS PRESERVED in its
    %    entirety.
    %
    %    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    %    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    %    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    %    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    %    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    %    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    %    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    %
    % The Flux2Current function converts lambda_dq and I_dq data obtained from
    % measurements or from an FEA tool to create look-up tables for the d- and
    % q-axis currents as a function of the flux in the d- and q-axes. It is
    % assumed that the saturation effects are symmetric for both Id and Iq i.e.
    % lambda_d(I_d,I_q) = -lambda_d(-I_d,I_q)
    % lambda_q(I_d,I_q) = -lambda_q(I_d,-I_q)
    %
    % Inputs:
    %
    % I_d (I_q): nxm matrix of d-axis (q-axis) currents that are obtained as a
    % function of I_rms and advance angle. Advance angle should be in the range
    % between 0 and pi/2 electrical angle. It is assumed that the columns
    % correspond to different advance angle values and rows correspond to
    % different I_rms values.
    %
    % lambda_d (lambda_q): nxm matrix of d-axis (q-axis) flux linkages that are
    % obtained as a function of I_rms and advance angle. Advance angle should
    % be in the range between 0 and pi/2 electrical angle. It is assumed that
    % the columns correspond to different advance angle values and rows
    % correspond to different I_rms values.
    %
    % lambda_m: Flux linkage of the permanent magnet. If the lambda_d value
    % does not contain the PM flux then this value should be set to zero.
    %
    % Input_refine: Specified as a real, nonnegative, integer scalar. This
    % value specifies the number of times to repeatedly divide the intervals of
    % the refined grid in each dimension. This results in 2^k-1 interpolated
    % points between d- and q-axis currents and flux linkage values. A value of
    % 0 will result in the data entered as is. The refinement factor is limited
    % to a maximum value of 3. Input_refine is used in an INTERP2 function on
    % the input current and flux data provided by the user.
    %
    % Output_refine: Specified as a real, nonnegative, integer scalar. This
    % value specifies the number of times to repeatedly divide the intervals of
    % the refined grid in each dimension. This results in 2^k-1 interpolated
    % points between d- and q-axis currents and flux linkage values. A value of
    % 0 will result in the data entered as is. The refinement factor is limited
    % to a maximum value of 3. Output_refine is used in an INTERP2 function on
    % the output lookup table values of current and flux.
    %
    % windowSize: Corresponds to the averaging length of the averaging vector.
    % A windowSize of 3 will create an averaging vector that averages three
    % consecutive entries. Must be an odd integer. If an even integer is used
    % then it is incremented by 1 to make it odd.
    %
    % WARNING: Chosing a large windowSize will cause significant deviation from
    % the original data. A windowSize of 3,5,7 or 9 is recommended.
    %
    % bool: Boolean variable indicating an instant when the d-axis currents
    % and flux linkages are in the negative axis. If this is the case and
    % assuming symmetric saturation of the machine, the I_d and lambda_d values
    % are converted to positive quantities. It is always assumed that the q-axis
    % measurements are made in the positive axis.
    %
    %   See also CONV, INTERP2.
    %
    % Outputs:
    %
    % lambda_d_lookup (lambda_q_lookup): kx1 column vector the stores the
    % d-axis (q-axis) flux values that will be used for the d-axis (q-axis)
    % current look-up tables.
    %
    % Id_lookup (Iq_lookup): kxk matrix that stores the d-axis (q-axis)
    % estimated current information as a function of flux in the d-axis and
    % q-axis.
    %
    % Plexim, Inc. Author: Munadir A. Ahmed Date: 07/17/2014