Index exceeds matrix dimensions when I tried to execute this code.
1 view (last 30 days)
Show older comments
Saint Dee
on 9 Apr 2018
Commented: Walter Roberson
on 9 Apr 2018
for i = 1:I %%I = 10
for k = 1:K %%K = 100
rate(i,k,:) = W*log2(1+sinr); %%W = 20*10^6
energy_eff(i,k) = (b(i,k)*rate(i,k)/P_ci); %%b=linspace(0,1,10)
2 Comments
KSSV
on 9 Apr 2018
Which line it showed error? YOu need to check the dimensions of b and rate....are they of size 10*100?
Accepted Answer
Walter Roberson
on 9 Apr 2018
b=linspace(0,1,10)
so it is a row vector. But in the line
energy_eff(i,k) = (b(i,k)*rate(i,k)/P_ci); %%b=linspace(0,1,10)
you are trying to index b(i,k) which is going to fail as soon as i becomes 2.
2 Comments
Walter Roberson
on 9 Apr 2018
I do not know what your equations are. For this purpose, element-by-element multiplication is important compared to matrix multiplication.
Also, I just noticed that you assign to rate(i,k,:) but on that 4th line you access rate(i,k) with no third dimension.
My guess is you need
b'*squeeze(rate(i,k,:))
or something like that. Or
dot(b, squeeze(rate(i,k,:)) )
More Answers (0)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!