2014-02-12 4 views
0

큰 희소 행렬 및 작은 희소 행렬로 작업하고 있습니다.명령이 실패하면 다른 기능을 실행하십시오.

이제 eig 명령은 희박한 행렬 (sprand 사용시)에서 작동하지 않으므로 eigs을 사용해야합니다.

하지만 사용하는 매트릭스에 따라 둘 다 사용해야하는 스크립트가 있습니다. 두 개의 동일한 스크립트가있을 수 있습니다. 하나는 eig이고 다른 하나는 eigs (및 5,6 < => N-1, N)입니다. 그러나이 문제를 해결하는 방법을 알고 싶습니다.

다음은 내 스크립트의 시작입니다.

f=eigs(A); % was eig  
figure(1) 
semilogy(res) % 

convfact = abs(f(5))/abs(f(6)); % 5,6 was N-1 and N respectively 
hold on 
semilogy(convfact.^(1:k),'r--') 
나는 또한 코드의 주석이 말한대로, 나는 eig 명령을 사용하고 경우에 대해 지적하고 싶습니다

, 5와 6은 N-1 및 N.했다 그러나 분명히 MATLAB는 수 0000x0000 행렬에서이 값을 찾을 수 있으므로 eigs이 제공하는 5와 6을 사용해야합니다.

이 문제를 해결하는 방법에 대한 조언은 정말 감사하겠습니다.

+0

정확히 무엇을 요구하고 있는지 확실하지 않습니다. 그러나 당신은 어떤 종류의 행렬을 테스트하기 위해'if' 문을 사용해 보았습니까? 그런 다음 해당 명령을 사용합니까? 제목에서 보면 'try-catch'블록을 사용하여 처리 할 수도 있지만 아마도이 방법이 최선의 방법은 아닙니다. –

답변

1

간단한 if/else 블록의 문제점은 무엇입니까?

if issparse(A) 
    f = eigs(A); 
else 
    f = eig(A); 
end