Matlab 如果命令失败,请运行其他函数

Matlab 如果命令失败,请运行其他函数,matlab,matrix,eigenvalue,Matlab,Matrix,Eigenvalue,我正在处理大型稀疏矩阵和小型稀疏矩阵 现在,eig命令不适用于稀疏矩阵(使用sprand时),因此我必须使用eig 但是我有一个脚本,它需要根据我使用的矩阵同时使用这两种方法。我可以有两个相同的脚本,一个带有eig另一个eig(和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

我正在处理大型稀疏矩阵和小型稀疏矩阵

现在,
eig
命令不适用于稀疏矩阵(使用
sprand
时),因此我必须使用
eig

但是我有一个脚本,它需要根据我使用的矩阵同时使用这两种方法。我可以有两个相同的脚本,一个带有
eig
另一个
eig
(和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矩阵上找到这些值,所以我必须使用
eig
提供的第5和第6个值


任何关于解决此问题的建议都将非常好,谢谢。

简单的if/else块有什么问题

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

不知道你到底在问什么。但是您是否尝试过使用
if
语句来测试您拥有的矩阵类型,然后使用相应的命令?从你的标题来看,这似乎也可以用
try-catch
块来处理,但这可能不是最好的方法。