I am afraid that this Matlab code is for demonstrating the solution to canonical scattering problems. You would need some full-wave EM solver and human head phantom to study the microwave radiation and tissue absorption problem.
It works nicely for my matrices of about 1024x20 and is significantly faster than 'lsqnonneg'.
For 100 (random) trials, A is 1024x20, b is 1024x1:
'blocknnls' = 0.686167 seconds
'lsqnonneg' = 5.869711 seconds
Faster than lsqonneg for some sizes of problems.
Interestingly, my tests show it is slower than lsqnonneg
when the number of unknowns to estimate is small, say 2 or 3 and there are few rows in A. Thus, for size(A) ==
[5,2], lsqnonneg is 3x faster. For size(A) == [100,10],
blocknnls is 3x faster.