Decimal numbers in a triple for loop
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi all, I want to run the equation for a range of q variables at an increment such as
q = 0.1:0.1:1;
I need to use a for loop, where actually I include 2 additional for loops:
a & b are 2 cells.
M=10;
for i=1:length(q)
for i1=1:M
for i2=1:M
n_pm(i)=n_pm(i)+exp(-1i*q(i)*(i1-i2))*a{i1}*b{i2};
end
end
n_pmT(i)=n_pm(i)/(2*M)^2;
end
This code however gives me either the error 'Subscript indices must either be real positive integers or logicals' or 'Index exceeds matrix dimensions', depending on how I define q in the loop.
Looking forward for some help!
Thank you in advance.
댓글 수: 1
James Tursa
2018년 3월 21일
It would help if you copy & pasted the entire error message for us, including the offending line.
답변 (2개)
James Tursa
2018년 3월 21일
Have you inadvertently created a variable with the name 'exp' in your workspace? If so, clear it and don't use that name for a variable.
댓글 수: 4
James Tursa
2018년 3월 22일
This error:
'Subscript indices must either be real positive integers or logicals' or 'Index exceeds matrix dimensions'
was probably caused by a variable named 'exp' in your workspace.
This error:
'Index exceeds matrix dimensions'
is different, and means exactly what it says. Did you use the dbstop debugging tip I gave you? When the code paused, what were these values:
i
i1
i2
numel(q)
numel(n_pm)
numel(n_pmT)
numel(a)
numel(b)
Auryn_
2018년 3월 22일
편집: Auryn_
2018년 3월 22일
댓글 수: 2
James Tursa
2018년 3월 22일
Well, it may run but I have my doubts that this code actually does what you want it to. Inside your inner loop you have n_pm=n_pm+etc. Do you realize that the etc part is added to all of the elements of n_pm at each iteration? Is that what you really want?
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!