Optimizing a matrix of values

9 vues (au cours des 30 derniers jours)
Allan Paolo
Allan Paolo le 14 Déc 2023
Réponse apportée : Matt J le 14 Déc 2023
Hi, I need help in optimizing a matrix of values. Assuming a 3x3 matrix, I would have this matrix:
I needed the values of A to F be optimized. What I would usually do is to just take [A B C D E F] as an input value and call it a day. To be fair, this works decently.
My main issue is that my matrix usually changes size, ie. it becomes this:
I will have to change the input to [A B] this time. My question, is, is there a more elegant way of doing these things: Is there a way for me to simply plug in the two matrices without reshaping them and forcing 0 on the diagonal?

Réponse acceptée

Matt J
Matt J le 14 Déc 2023
You could define the whole matrix as unknown, but with diagonal elements bound to zero:
LB=-inf(n);
LB(1:n+1:end)=0;
UB=-LB;
M=optimvar('M',[n,n],'Lower',LB,'Upper',UB);

Plus de réponses (1)

madhan ravi
madhan ravi le 14 Déc 2023
a = zeros(3);
[m, n] = size(a);
a(~diag(1 : m)) = 1 : m * n - m;
a.'
  2 commentaires
madhan ravi
madhan ravi le 14 Déc 2023
Modifié(e) : madhan ravi le 14 Déc 2023
a = zeros(2);
[m, n] = size(a);
a(~diag(1 : m)) = m * n - m : -1 : 1
%a(~diag(1 : m)) = flip(your_input)
madhan ravi
madhan ravi le 14 Déc 2023
where 1 : m * n - m is your input

Connectez-vous pour commenter.

Catégories

En savoir plus sur Nonlinear Optimization dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by