File Exchange

image thumbnail

MIMO Channel Capacity

version 1.0 (2.63 KB) by

This function calculates ergodic and outage capacity of correlated MIMO channels

17 Ratings



No License

This function calculates the ergodic and outage capacity of a MIMO Rayleigh
channel considering no CSIT (equal power allocation) and perfect CSIT
(waterfilling power allocation). In both cases perfect CSIR is assumed. The
channel is assumed to be spatially correlated according to a Kronecker
model but temporally uncorrelated.

Comments and Ratings (29)

ajay kmr

thanks it helped me alot..:)


some error in this code


ikaza (view profile)

Got it Omid,

Thank You Once Again for excellent Code :D


ikaza (view profile)

Hello Omid ,

The code was excellent but am getting a small error

Error :

>> MIMOCapacity (1)
Error using MIMOCapacity (line 24)
Not enough input arguments.

Am a newbie In Matlab Could anyone plz Help in this aspect.

Suggestions would be highly Appreciated

Thank You :)


Hao (view profile)

Good code!

gagan kalita

can anyone write a code regarding the capacity of cooperative mimo having one relay node


Omid, Good code! Kronecker model requires that you divide the H by the square-root of the trace of the matrix R_r! Where is the computation of the determinant of (.)? Comment

sorry for 'statistical'

Hello, Omid,
So funny to get the outage problity using statically method


fahmy (view profile)

very good

yan weijun

thank you for your help

yan weijun

thank you for your help


dchris (view profile)

Many thanks for sharing this code.
Could you give us a short explanation for the outage capacity calculation?
Why is the outage capacity, the i = (Pout*nsamp) element of the ordered matrix?
I am trying to understand the physical interpretation of this.


the outage is to calculate the capacity.

Ying Liu

The idea to calculte the outage capacity is excellent, thanks a lot.

xiaomeng peng

very good code thx a lot


Hakan (view profile)

I have a MIMO system with 3 Tx antenna and 2 Rx antenna.
-The channel is Rayleigh
-the channel length is L
hij=[h(0) h(1) h(L)] channel responses between ith Tx antenna and jth Rx antenna.
How can I obtain theses channel responses which are Rayleigh distributed?

shree bade

when i run this code i many undefined variables. i tried to change and add even though it shown mistakes .can any one provide this correct code.


Jing (view profile)

Thanks! very helpful!

I dont Know , there is error in first line SNR=10^(SNR/10) then SNR should be predermined ? Can any one help me in this... Jus now I m Working in Matlab .. i think the function MIMO capacity is missing is it,, i need to complete My work ... please help me....

wing ??

thank you for your share!

Yes, the code is nice!
I think there is one little bug in the line 40: instead of SNR/n_t it should be something like SNR/n_l where n_l = min([n_r, n_t]).
Thanks again!

jia fen

why the code ie not running in MATLAB?please comment!!!!!thank you!!!

Reza Mohammadkhani

Dear Omid,
Your style of programming is excellent!
Thank you for your codes. It help me to complete my codes (water-filling func).

Omid Darvishi

Thanks Yong, but I know very little about optimal transmission strategy with respect to outage capacity (power allocation over a subset of antennas) and also suboptimal subset selection techniques. I may add that in my code later when I know more about those schemes.
Thank you Tahir too, sorry for the mistake in writing your name in my reply to your answer.

Omid Darvishi

Thanks Yong. That gain over SISO channels in presence of fully-correlated antennas is due to array gain (beamforming). In other words, in fully correlated channels, though the correlation matrices become rank-1 and hence no multiplexing gain can be extracted, multiple antennas at the receiver can capture more power through optimal combining and multiple antennas at the transmit side can focus the transmitted power through beamforming (in case of perfect CSI at the transmitter).

Tahir Khan

The code is very good. However when I use it for a 4*4 MIMO with perfect correlation the capacity it gives is still higher then for and SISO system. Can you please explain to me why?

Yong Chang

Thanks very much!
This code is very nice!
But, I want to ask do you have any code to caculate the channel capacity after MIMO antenna subset selection.
My email is
Best regards

Omid Darvishi

Hi all,
If you are using my code, please kindly take your time to write a review and rate it.

MATLAB Release
MATLAB 7.5 (R2007b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video