固有ベクトルの向き
3 views (last 30 days)
Show older comments
Kohei Nishizawa
on 26 Sep 2022
Commented: Kohei Nishizawa
on 29 Sep 2022
固有ベクトルを算出するときにベクトルの符号を指定することは可能でしょうか?
4 Comments
Hernia Baby
on 26 Sep 2022
Edited: Hernia Baby
on 27 Sep 2022
※修正:日本語がおかしかったので書き直しました
----------
可能です。
どのように指定するかで回答を考えたいので、具体的な内容をお聞きしたいです。
その前に、まずはシンプルな例で検証をしてみましょう。
X = [-1,1,2];
Xi = MyEigVec(X)
function y = MyEigVec(x)
if x(1) < 0
y = - x;
else
y = x;
end
end
Accepted Answer
Hernia Baby
on 27 Sep 2022
各列ベクトルの符号が必ず対応しているものとして話を進めます
まずは準備
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 Comments
More Answers (1)
Kohei Nishizawa
on 28 Sep 2022
6 Comments
Hernia Baby
on 29 Sep 2022
すみません、少し教えてください。
「ベクトルの方向が変わっていない」というのは、どこを指しますか?
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の各列ベクトルは異なるように思えます。
See Also
Categories
Find more on リサンプリングの手法 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!