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

1 回表示 (過去 30 日間)
Omar B.
Omar B. 2019 年 9 月 19 日
コメント済み: Omar B. 2019 年 9 月 19 日
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.
Omar B.
Omar B. 2019 年 9 月 19 日
Thank you so much.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by