# Subscript indices must either be real positive integers or logicals

1 ビュー (過去 30 日間)
Igina 2013 年 6 月 18 日
Hi everybody, I wrote this code but it's seems that it has some problems. Could you help me figure out my mistakes? Thank you!
A=[1,2,5,4,1,2,3,6; 1,4,5,6,0,0,0,0;2,3,2,5,6,0,0,0];
nsim=3;
M=6;
TRI=zeros(M,M,nsim);
k=1;
while(k<3)
m=1;
while(m<length(A(1,:)))
TRI(A(k,m),A(k,m+1),k)++;
m++;
end
k++;
end
##### 1 件のコメント表示非表示 なし
Jan 2013 年 6 月 19 日
Please be more specific. "It seems that is has sime problems" conatins too few information about the occurring problems.

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

### 採用された回答

Kye Taylor 2013 年 6 月 18 日

There are several issues you need to resolve with your code before it will run. First, there is no increment operator in MATLAB, so expressions like
k++;
need to be replaced with
k = k+1;
Once you make those changes, you'll get an error about indexing... something like
Attempted to access TRI(6,0,2); index must be a positive integer or logical.
This is because the matrix A has zeros as entries, and you're using the entries of A to index into TRI. Since I don't know your end goal, I can't suggest with much certainty how to fix that error, but the code below will run. I've added comments to every line i changed. See if it produces what you're looking for and if not, respond with the issue...
A=[1,2,5,4,1,2,3,6; 1,4,5,6,0,0,0,0;2,3,2,5,6,0,0,0];
A = A + 1; % now indices are between 1 and 7 instead of 0 and 6
nsim=3;
M=7; % changed to 7 to make TRI big enough for indices in A
TRI=zeros(M,M,nsim);
k=1;
while(k<3)
m=1;
while(m<length(A(1,:)))
TRI(A(k,m),A(k,m+1),k) = TRI(A(k,m),A(k,m+1),k) + 1; % no increment op.
m=m+1; % no increment op.
end
k = k+1; % no increment op.
end
##### 3 件のコメント表示非表示 2 件の古いコメント
Igina 2013 年 6 月 19 日
Hi, now I'm working on another computer and the code seems to go well! Thank you!

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

### Community Treasure Hunt

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

Start Hunting!

Translated by