固有ベクトルの向き
2 次查看(过去 30 天)
显示 更早的评论
固有ベクトルを算出するときにベクトルの符号を指定することは可能でしょうか?
4 个评论
Hernia Baby
2022-9-26
编辑:Hernia Baby
2022-9-27
※修正:日本語がおかしかったので書き直しました
----------
可能です。
どのように指定するかで回答を考えたいので、具体的な内容をお聞きしたいです。
その前に、まずはシンプルな例で検証をしてみましょう。
X = [-1,1,2];
Xi = MyEigVec(X)
function y = MyEigVec(x)
if x(1) < 0
y = - x;
else
y = x;
end
end
采纳的回答
Hernia Baby
2022-9-27
各列ベクトルの符号が必ず対応しているものとして話を進めます
まずは準備
clc,clear
A = [-0.0449 -0.5388 -0.8413; -0.6687 0.6418 -0.3754; 0.7422 0.5457 -0.3891];
A(:,:,2) = [-0.0453 -0.5361 -0.8429; -0.6897 0.6272 -0.3618; 0.7227 0.5649 -0.3982];
A(:,:,3) = [0.0464 0.5318 -0.8456; 0.7089 -0.6139 -0.3472;-0.7038 -0.5834 -0.4055];
A(:,:,4) = [0.0469 -0.5288 -0.8475; 0.7276 0.5994 -0.3337;-0.6844 0.6010 -0.4128];
ここでAの符号を算出します
Sgn_A = sign(A)
すべて1の行列を作成し、3番目と4番目の符号を1番目と2番目のものとかけることで反転すべきか決めます
idx = ones(size(A));
for ii = 1:size(A,3)/2
idx(:,:,ii+2) = Sgn_A(:,:,ii).*Sgn_A(:,:,ii+2);
end
B = A.*idx;
Bの符号を見てみましょう
sign(B)
1,2番目と対応していることがわかりました
0 个评论
更多回答(1 个)
Kohei Nishizawa
2022-9-28
6 个评论
Hernia Baby
2022-9-29
すみません、少し教えてください。
「ベクトルの方向が変わっていない」というのは、どこを指しますか?
B = [-0.0412 -0.7211 -0.6916; -0.0365 0.6928 -0.7202; 0.9985 -0.0045 -0.0549];
B(:,:,2) = [-0.0417 -0.7310 -0.6811; -0.0515 0.6823 -0.7292; 0.9978 0.0046 -0.0661]
上記ですと1と2の各列ベクトルは異なるように思えます。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!