# Subscript indices must either be real positive integers or logicals.

1 view (last 30 days)
alireza kooshafar on 25 Oct 2018
Commented: alireza kooshafar on 25 Oct 2018
i got this error in this code i don't know why.
c=[x(1:end-1,:),x(2:end,:)];
dx=c(:,2)-c(:,1);
t=[y(1:end-1,:),y(2:end,:)];
dy=t(:,2)-t(:,1);
ra=[];
rb=[];
for i=1:size(dx)
if dx(2i-1)>0 & dy(2i)<0;
ra(2i-1)=1;
ra(2i)=1;
end
if dy(2i-1)>0 & dx(2i)<0;
rb(2i-1)=1;
rb(2i)=1;
end
end

#### 1 Comment

Which line is the error on? You can use the stop/pause on errors debug option from the Breakpoints menu to have the code stop at the line causing the error. Then it is trivial to work out what is wrong by looking at any subscript indices you are using in the command window.

jonas on 25 Oct 2018
Edited: jonas on 25 Oct 2018
It's hard to tell without having some input, but these types of lines are definitely wrong:
ra(2i)=1;
i is being interpreted as imaginary, which is why you should not use i as a looping variable.
ans =
0.0000 + 2.0000i
Could be other errors as well.

jonas on 25 Oct 2018
oh, that's poor advice on my part then. Lesson learned.
Personally I frequently use i as well, but the general advice on this forum tends to be to avoid using it. I will add j to the list :)
alireza kooshafar on 25 Oct 2018
I have two matrices(dx dy), I'm looking for a condition to check 1. If the first array of dx was a positive (negative), the first array of dy be a negative (positive) array. 2. If the event is the first one, check if the odd arrays of dx and dy will all be the same and the even arrays are exactly the opposite.
alireza kooshafar on 25 Oct 2018
this is what i mean