MATLAB: Subscript indices must either be real positive integers or logicals

subscript indices must either be real positive integers or logicals.

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

Best Answer

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