I am trying to do this in my code:
for i=1:c+1
load(row) = load(row)+(ro(row,i)* MinRateCurrentUserRRH(row,i))/(log(1+SINR(row,i)));
end
ro is a matrix of 1 and 0 s and MinRateCurrentUserRRH and SINR s are other matrixes. before running the for loop, load (row) is fine and for example 0.3, after first loop, it turns to NaN, so it gives errors, I can't figure out the problem. can anyone help me with it?

3 Comments

Birdman
Birdman on 10 Feb 2018
Share MinRateCurrentUserRRH and SINR matrices.
negin tebyani
negin tebyani on 10 Feb 2018
Edited: negin tebyani on 10 Feb 2018
SINR and currnetminrate are zero matrices that are filled in the code in other loops, in the time of running this, they look like:
and
and c is 1.
As other poster says, nothing anybody here can do without actual data but you've got all the information you need; just use the debugger and see where your logic fails.
While not the specific problem, you can probably replace all the loops with Matlab array operations; "the MATLAB way". Look at the "dot" operators under
>> help punct
Punctuation.
. Decimal point. 325/100, 3.25 and .325e1 are all the same.
. Array operations. Element-by-element multiplicative operations
are obtained using .* , .^ , ./ , .\ or .'. For example,
C = A ./ B is the matrix with elements c(i,j) = a(i,j)/b(i,j).
...

Sign in to comment.

 Accepted Answer

Walter Roberson
Walter Roberson on 10 Feb 2018

0 votes

Your row is a vector, so (log(1+SINR(row,i)) is a vector, so your / operator is mrdivide, the matrix right division operator, with A/B being approximately equivalent to A * pinv(B) where the * indicates mtimes, the algebraic matrix multiplication operator. For vector row you need the ./ operator instead of /
You will also need to watch out for the * operator earlier in the line: you probably want it to be .*

More Answers (0)

Categories

Community Treasure Hunt

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

Start Hunting!