Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
162 views
1
function [A, B] = formaab(F, concluir)
2
%formaab
3
% [A, B] = formaab(F)
4
%
5
% Convierte unas recetas en tiempo discreto a la forma de matrices de
6
% insumos A y productos B.
7
% |-F0 0 0 0 0| |F1 I 0 0 0|
8
% | 0 I 0 0 0| |F2 0 I 0 0|
9
% A = | 0 0 I 0 0| B = |F3 0 0 I 0|
10
% | 0 0 0 I 0| |F4 0 0 0 I|
11
% | 0 0 0 0 I| |F5 0 0 0 0|
12
%
13
% [A, B] = formaab(F, concluir)
14
% F recetas en tiempo discreto
15
% concluir si es 1 no incluye los procesos despu�s de su �ltimo flujo
16
% A matriz de insumos
17
% B matriz de productos
18
19
if size(F, 3) == 2
20
A = -F(:,:,1);
21
B = F(:,:,2);
22
else
23
[filas, columnas, ancho] = size(F);
24
if nargin < 2, concluir = []; end
25
if ~isempty(concluir)
26
final = 2*ones(1, filas);
27
for c1 = 1:filas
28
for c3 = ancho:-1:3
29
if sum(abs(F(c1,:,c3))) > 0, final(c1) = c3; break; end
30
end
31
end
32
else
33
final = ancho*ones(1,filas);
34
end
35
q = sum(final) - filas - filas;
36
A = zeros(filas + q, columnas + q);
37
A(1:filas, 1:columnas) = -F(:,:,1);
38
A(filas+1:filas+q, columnas+1:columnas+q) = eye(q);
39
B = zeros(filas + q, columnas + q);
40
f = 1;
41
c = columnas+1;
42
for c3 = 2:ancho
43
for c1 = 1:filas
44
if final(c1) >= c3
45
B(f, 1:columnas) = F(c1,:,c3);
46
if final(c1) > c3
47
B(f, c) = 1;
48
c = c + 1;
49
end
50
f = f + 1;
51
end
52
end
53
end
54
end
55
56
57