How to fix the error (Index exceeds matrix dimensions)?

1 次查看(过去 30 天)
could you please check my code. I got the following error
Index exceeds matrix dimensionshow .
Error in NnNonSymmetricLanczos (line 17)
r=A*V(:,j)-alpha*V(:,j)-gamma*V(:,j-1);
function [alpha,beta,gamma,T] = alg(A,v,n)
n=4;
c = ones(n,1);
t = ones(1,n)./(1:n);
A = toeplitz(c,t);
v = randn(n,1);
V=v; W=v/norm(v)^2;
beta=0; gamma=0;
alpha=W(:,1)'*A*V(:,1); T(1,1)=alpha;
for j=1:n
if j==1
r=A*V(:,j)-alpha*V(:,j);
p=A'*W(:,j)-alpha*W(:,j);
else
r=A*V(:,j)-alpha*V(:,j)-gamma*V(:,j-1);
p=A'*W(:,j)-alpha*W(:,j)-beta*W(:,j-1);
end
beta=norm(r);
gamma=r'*p/beta;
end
T(j+1,j)=beta;
T(j,j+1)=gamma;
V=[V,r/beta];
W=[W,p/gamma];
alpha=W(:,j+1)'*A*V(:,j+1);
T(j+1,j+1)=alpha;
end

采纳的回答

Matt J
Matt J 2019-9-19
V and W only have a single column, but you are indexing them V(:,j) and W(:,j) at j>1.
  3 个评论
Matt J
Matt J 2019-9-19
编辑:Matt J 2019-9-19
You currently have these two lines creating a one-column matrix, V.
v = randn(n,1);
V=v;
If V should have n columns, then you must change something here.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by