if statement with and or
Mostrar comentarios más antiguos
Hi sorry, i want to create a code to know if a generic matrix A is positive definite. On my version of matlab (2016) when i write the second & the code gives me an error saying that "Matrix dimensions must agree". Can you help me?
A=[13/4 1/2 0; 1/2 17/4 1/2; 0 1/2 21/4]
[n,m]=size(A);
D_A=diag(A);
M_A=A-diag(D_A);
if n==m & A==A' & (abs(D_A)>sum(abs(M_A),2) | abs((D_A)')>sum(abs(M_A),1)) & diag(A)>0
disp 'A è DEFINITA POSITIVA'
end
12 comentarios
Voss
el 28 de Dic. de 2021
Use && to short-circuit. Requires scalar inputs.
Marco Lepidi
el 28 de Dic. de 2021
the cyclist
el 28 de Dic. de 2021
Is the code you posted exactly the code that gives the error? It doesn't give an error in 2021b, and I don't see specifically what would give an error in a prior version.
Voss
el 28 de Dic. de 2021
Like I said, "Requires scalar inputs."
Marco Lepidi
el 28 de Dic. de 2021
Marco Lepidi
el 28 de Dic. de 2021
Voss
el 28 de Dic. de 2021
It seems like you are using a non-square matrix A to get the error you report, but the matrix here is square so we get no error.
DGM
el 28 de Dic. de 2021
This
A==A.'
returns a vector, but this:
isequal(A,A.')
returns a scalar.
Voss
el 28 de Dic. de 2021
I don't know if this is precisely the condition you want, but you might try something like this:
if n==m && isequal(A,A') && (all(abs(D_A)>sum(abs(M_A),2)) || all(abs((D_A)')>sum(abs(M_A),1))) && all(diag(A)>0)
Marco Lepidi
el 28 de Dic. de 2021
Marco Lepidi
el 28 de Dic. de 2021
Respuestas (0)
Categorías
Más información sobre Data Distribution Plots en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!