Decimal numbers in a triple for loop
1 回表示 (過去 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!