MATLAB Answers

Error using for loop

조회 수: 26(최근 30일)
Mohamed Sebnat
Mohamed Sebnat 2018년 2월 11일
i'm currently working on the discrete Wigner ville transform, wich require to use a concatenated for loops. But when i run the code i get an error message : * Subscript indices must either be real positive integers or logicals.*. a simple version of my code:
for i = 1 :length(A)
for k = 1:length(B)
a = A(i+k)*A(i-k)
end
end
  댓글 수: 1
Jos (10584)
Jos (10584) 2018년 2월 12일
It would be helpful if you give
  1. the actual code
  2. short examples of the inputs A and B,
  3. the expected output
  4. the complete error message

댓글을 달려면 로그인하십시오.

답변(3개)

Jan
Jan 2018년 2월 11일
Posting a simplified version of the real failing code has the disadvantage, that the actual problem might be concealed.
Use the debugger to examine the problem:
dbstop if error
Now your code will stop at:
a= A(i+k) * A(i-k)
when i-k is not a positive integer. Neither 0 nor negative indices are allowed in Matlab.
  댓글 수: 1
Mohamed Sebnat
Mohamed Sebnat 2018년 2월 12일
exactly my code stop working at
a = A(i+k)*A(i-k)
i understand that 0 and negative indices are not allowed in Matlab, so i will reformulate my question: how can I work around this issue? in other word how can I write the same formulae with respect to Matlab Syntax?

댓글을 달려면 로그인하십시오.


possibility
possibility 2018년 2월 11일
There are two main fails in your code. Elaborating Jan's post;
(1) when i=1 and k=1, i.e. first loop, A(i-k) = A(0) fails. The first element is starting with index 1.
(2) Even if you correct (1), you will see the same error when i=length(A), k=1. Because you attempt to an index A(i+k) which is larger than length(A).
  댓글 수: 1
Mohamed Sebnat
Mohamed Sebnat 2018년 2월 12일
how can I work around this tow issues, any ideas ?

댓글을 달려면 로그인하십시오.


Muhammad Usama Sharaf SAAFI
Muhammad Usama Sharaf SAAFI 2020년 1월 24일
In first iteration , value of i and k is 1 so A(i-k) means A(0) and in matlab "0" can not be index of any array so this cause error in your case. So, i-k should not be equal to zero otherwise it will generate error.

Community Treasure Hunt

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

Start Hunting!

Translated by