How to compute channel capacity

capacity

I want to know how to calculate the channel capacity without using the mathematical formula.
By definition it is the maximum number of bits per second that you can send over the channel with a very low probability of error.
So I was wondering if I make a very large number of Matlab simulations of transmitting symbols (BPSK modulated for example) from a transmitter to a receiver using a fixed Band width and a certain Signal to Interference Rate (SIR witch represents the power of the signal over the power of the noise), How can I measure the capacity of my channel ?
My idea is that I can calculate the Bit Error Rate (the number of error bits over the total number of bits). I will fix a minimum acceptable probability of error (say BER=10^-6).
Then I will calculate the number of correct received bits below my acceptable probability of error to find my channel capacity of that simulation.
After many simulations I will take the mean of all my calculated capacity witch will represent my channel capacity for a certain modulation, band width and SIR.

Best Answer

Your proposal will not give you the channel capacity as defined in the Shannon-Hartley channel capacity formula.

The reason is that what the Shannon-Hartley formula tells us is that given a channel with a fixed SNR, there exists some coding scheme that achieves error-free transmission at the channel capacity. Put another way, the formula tells us the error free transmission rate we can achieve if we choose the best of all possible coding schemes.

Since your proposal tests the error rate with only one particular coding scheme, it is not likely to achieve the optimum transmission rate.

Actually finding the best possible scheme in all situations is not a solved problem and has been a major focus of communications research since 1948. That means we don't yet even know what all the possible coding schemes are, so there's no practical way to actually do a Monte-Carlo or other simulation to estimate the channel capacity.

In any case, why should we avoid using the formula? It's quite simple to calculate

$$C = B\log_2(1+\mathrm{SNR})$$