Problem with the use of “eig” in a Simulink Matlab function

7 visualizaciones (últimos 30 días)
Alessandro Mignocchi
Alessandro Mignocchi el 28 de Dic. de 2021
Editada: Christine Tobler el 3 de En. de 2022
Hi,
we are implementing a Simulink model to retrieve the components of Quaternions from attitude determination block. While using the command "eig" in a matlab function, in order to retrieve the eigenvector corresponding to the maximum eigenvalue, with this procedure:
function q_eigen = fcn(K)
[q_e,lambda] = eig(K);
[lambda_max, col] = max(max(lambda));
q_eigen = q_e(:,col);
end
Simulink dispalys the error "Inferred complexity ("on") for data "q_eigen" does not match back propagated complexity ("off") from Simulink."
We have tried to put "real" command before q_e, but we obtain the same result.
  2 comentarios
Walter Roberson
Walter Roberson el 28 de Dic. de 2021
Is it possible that any eigenvalue could be complex?
Christine Tobler
Christine Tobler el 3 de En. de 2022
Editada: Christine Tobler el 3 de En. de 2022
I don't know much about this, but the following older question seems related
and has some answers that to me seem promising to try out.
Using
q_eigen = real(q_eigen);
at the end of the function might remove this error, but unless you are very certain these eigenvectors are actually guaranteed to be real, it will mean returning a wrong result, since the imaginary component shouldn't just be discarded if it exists.

Iniciar sesión para comentar.

Respuestas (1)

Sulaymon Eshkabilov
Sulaymon Eshkabilov el 28 de Dic. de 2021
Editada: Sulaymon Eshkabilov el 28 de Dic. de 2021
Maybe you can try max(max(real(lambda))) instead of real(q_e) to see your Simulink model simulation even though your eigenvalues are complex-valued.

Categorías

Más información sobre General Applications en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by