Я столкнулся с проблемой в MatLab при попытке запустить цикл. Для каждой итерации в цикле вычисляются собственные значения и собственные векторы для матрицы 3x3 (матрица различается на каждой итерации). Кроме того, каждая итерация всегда должна давать один собственный вектор вида [0 a 0], где только среднее значение a не равно нулю.
Мне нужно получить индекс столбца матрицы собственных векторов, где это происходит. Для этого я настроил следующий цикл в своем основном цикле (где генерируется матрица):
for i = 1:3
if (eigenvectors(1,i)==0) && (eigenvectors(3,i)==0)
index_sh = i
end
end
Проблема в том, что рассматриваемая матрица собственных векторов иногда будет иметь вид:
eigenvectors =
-0.7310 -0.6824 0
0 0 1.0000
0.6824 -0.7310 0
и в этом случае мой код работает хорошо, и я получаю index_sh = 3.
Однако иногда матрица имеет вид:
eigenvectors =
0.0000 0.6663 0.7457
-1.0000 0.0000 0.0000
-0.0000 -0.7457 0.6663
И в этом случае MatLab не присваивает никакого значения index_sh
, хотя я хочу, чтобы index_sh
было равно 1 в этом случае.
Если кто-нибудь знает, как мне решить эту проблему, чтобы MatLab присваивал значение также, когда нули записываются как 0.0000
, я был бы очень благодарен!