图库生成的稀疏矩阵错误:下标索引必须是实数正整数或逻辑数

Error for sparse matrix generated by gallery: subscript indices must either be real positive integers or logicals

我通过以下方式生成了一个稀疏矩阵:

A = full(gallery('tridiag',n,1,4,1));

当我尝试通过以下方式为此函数生成特征向量时:

eig(A)

我收到标准错误 "Subscript indices must either be real positive integers or logicals." 我通读了 Subscript indices must either be real positive integers or logicals, generic solution,但不知道如何更正该问题。这仅仅是因为我创建稀疏矩阵的方式,即使用 gallery 命令吗?如果是这样,我怎样才能创建没有这个问题的矩阵?

我找到了以下内容:

他们使用不同的算法,针对不同的问题和不同的目标量身定制。

eig 是一个很好的、快速的、通用的 eigenvalue/vector 求解器。当您的矩阵具有适合内存的实际大小,以及您需要所有 eigenvalues/vectors 时,它适合使用。稀疏矩阵在 eig 中根本不起作用。

Eigs 是一种求解器,更适合您只需要 eigenvalues/vectors 的有限子集的情况。这里的矩阵通常以稀疏格式存储,因为作为一个完整的矩阵,它会占用太多内存来存储。看来eigs是基于ARPACK的。

如果您真的要询问有关实际算法的细节,那么这个问题显然不适合本网站。坐下来阅读 "Matrix Computations" 的副本,或者更好的是,阅读 eigs 文档中列出的一对参考文献。 来自 What is the difference between 'eig' and 'eigs'?

报告的错误表明 eig 被视为变量。在那种情况下,应该清除工作区 (clear) 并再次尝试 eig。如果使用 which eig ,这也会立即显而易见,在这种情况下,MATLAB 将 return: eig is a variable. (而不是 built-in method

如果这不起作用,下一个显而易见的事情是使用 regenerate MATLAB's preferences and then rehash the toolbox cache 以防两者中的任何一个因外部问题或用户意外而损坏。