function [A, B] = formaab(F, concluir)
%formaab
%   [A, B] = formaab(F)
%
%   Convierte unas recetas en tiempo discreto a la forma de matrices de 
%   insumos A y productos B.
%          |-F0  0   0   0   0|         |F1  I   0   0   0|
%          | 0   I   0   0   0|         |F2  0   I   0   0|
%      A = | 0   0   I   0   0|     B = |F3  0   0   I   0|
%          | 0   0   0   I   0|         |F4  0   0   0   I|
%          | 0   0   0   0   I|         |F5  0   0   0   0|
%
%   [A, B] = formaab(F, concluir)
%      F         recetas en tiempo discreto
%      concluir  si es 1 no incluye los procesos después de su último flujo
%      A         matriz de insumos
%      B         matriz de productos

if size(F, 3) == 2
    A = -F(:,:,1);
    B = F(:,:,2);
else
    [filas, columnas, ancho] = size(F);
    if nargin < 2, concluir = []; end
    if ~isempty(concluir)
        final = 2*ones(1, filas);
        for c1 = 1:filas
            for c3 = ancho:-1:3
                if sum(abs(F(c1,:,c3))) > 0, final(c1) = c3; break; end
            end
        end
    else
        final = ancho*ones(1,filas);
    end
    q = sum(final) - filas - filas;
    A = zeros(filas + q, columnas + q);
    A(1:filas, 1:columnas) = -F(:,:,1);
    A(filas+1:filas+q, columnas+1:columnas+q) = eye(q);
    B = zeros(filas + q, columnas + q);
    f = 1;
    c = columnas+1;
    for c3 = 2:ancho
        for c1 = 1:filas
            if final(c1) >= c3
                B(f, 1:columnas) = F(c1,:,c3);
                if final(c1) > c3
                    B(f, c) = 1;
                    c = c + 1;
                end
                f = f + 1;
            end
        end
    end
end

