我正在使用大型稀疏矩阵和小稀疏矩阵。
现在,eig
命令不适用于稀疏矩阵(使用sprand
时),因此我必须使用eigs
。
但我有一个脚本,需要根据我正在使用的矩阵使用两者。我可以有两个相同的脚本,一个eig
另一个eigs
(和5,6&lt; =&gt; N-1,N),但我想知道如何解决这个问题。< / p>
这是我的剧本的开始。
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 :(得分:1)
简单的if / else块有什么问题?
if issparse(A)
f = eigs(A);
else
f = eig(A);
end