2010-05-09 5 views
1

행렬이 직교 함수임을 확인하려고합니다. 벡터는matlab에서 벡터의 표준을 1로 비교할 수 없습니다.

for j=1:2; 
    if norm(S:,j) ~= 1; 
     return; % Not normal vector 
    end 
end 

을 수행하여 정상 그러나 규범 1에 그 비교 1.0000을 반환 할 때 내가 원하는 바가 아니다, 함수가 반환 사실이고 만약 내가 선택하여 시작합니다. 어떤 아이디어?

Thx

답변

4

Orthonormal 행렬에는 조바꿈을 곱할 때 항등 행렬을 얻는 속성이 있습니다. 따라서 루프를 수행하는 대신 간단하게 다음과 같이 쓸 수 있습니다.

%# multiply by the transpose and subtract identity 
test = S*S'-eye(size(S)); %#  ' (SO formatting) 

%# check whether the result is not too different from zero 
isOrthonormal = all(abs(test(:)) < 1E-10); 
관련 문제