Optimizing a matrix of values

4 Ansichten (letzte 30 Tage)
Allan Paolo
Allan Paolo am 14 Dez. 2023
Beantwortet: Matt J am 14 Dez. 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?

Akzeptierte Antwort

Matt J
Matt J am 14 Dez. 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);

Weitere Antworten (1)

madhan ravi
madhan ravi am 14 Dez. 2023
a = zeros(3);
[m, n] = size(a);
a(~diag(1 : m)) = 1 : m * n - m;
a.'
  2 Kommentare
madhan ravi
madhan ravi am 14 Dez. 2023
Bearbeitet: madhan ravi am 14 Dez. 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 am 14 Dez. 2023
where 1 : m * n - m is your input

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by