Find sum of max values in matrix subject to constraints
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Seamus
el 15 de Jul. de 2015
Comentada: bio lim
el 17 de Jul. de 2015
Hi I would greatly appreciate help on the following question. I have two matrices, a and b: a = [0 0 3 ; 0 7 2 ; 5 0 1 ] ; , with a representing yields; and b = [1 2 3 ; 1 2 100 ; 1 100 100 ] ; representing tenors.
I would like to find the highest combined value from a, subject to the sum of the coinciding values in b not exceeding three.
So the answer here would be 12, because the sum of 7+5 = 12, and the coinciding sum of b values would be 2+1 = 3.
Like i say any help at all would be greatly appreciated.
2 comentarios
Grzegorz Lippe
el 15 de Jul. de 2015
Editada: Grzegorz Lippe
el 15 de Jul. de 2015
Hello Seamus,
a nice riddle :)
A = [0 0 3 ; 0 7 2 ; 5 0 1 ] ;
B = [1 2 3 ; 1 2 100 ; 1 100 100 ] ;
siz = size(A) ;
b = B(:) ;
a = A(:) ;
[b1, b2] = meshgrid(b, b) ;
[a1, a2] = meshgrid(a, a) ;
% Sum up all possiblities, but only once
AA = triu(a1) + triu(a2) ;
BB = triu(b1) + triu(b2) ;
SIZ = size(AA) ;
% The sum of B must be less 4
validIdsofBB = triu(BB < 4) ;
% Find the maximum of all combined values in A, but only valid in B
[~, myID] = max(AA(:) .* validIdsofBB(:)) ;
%%The answer to the question:
AA(myID)
%%The Indizes to the original vectors:
[I,J] = ind2sub(SIZ,myID) ;
a(I)
a(J)
%%The Indizes to the original matrix
[i1,i2] = ind2sub(siz,I) ;
[j1,j2] = ind2sub(siz,J) ;
A(i1, i2)
A(j1, j2)
Respuesta aceptada
bio lim
el 15 de Jul. de 2015
a = [0 0 3 ; 0 7 2 ; 5 0 1 ] ;
b = [1 2 3 ; 1 2 100 ; 1 100 100 ] ;
[first_max, ind] = max(a(:));
[m1, n1] = ind2sub(size(a),ind);
c = a;
c(m1,n1) = 0;
[second_max, ind] = max(c(:));
[m2,n2] = ind2sub(size(c),ind);
sum1 = a(m1,n1) + a(m2,n2)
if b(m1,n1) < 3 & b(m2,n2) < 3
sum2 = b(m1,n1) + b(m2,n2)
end
2 comentarios
bio lim
el 17 de Jul. de 2015
Hi, my pleasure. Do you mean in a way that you can insert any input and get the expected results?
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!