www.gusucode.com > m4k20功率分配图 mimo功率优化,OFDM典型仿真程序,贪婪算法仿真程序 > code/mimo功率优化/mutual_mimo_func_diag.m

    function [fmutual_mean_new] = mutual_mimo_func_diag(M,N,H0,Rt_sqrt, ...
                                               gamma,lambda,NSAMPLE,I)
  
%------------------------------------------------------------
% Function to calculate the average mutual information given a diagonal
% transmit covariance matrix.
%
% Author: Mai Vu
% Date: 11/30/2003
% Revised: 04/12/2004
%------------------------------------------------------------

%------------------------------------------------------------
% INPUTS
%   M: number of receive antennas
%   N: number of transmit antennas
%   H0: channel mean
%   Rt_sqrt: square root of transmit correlation
%   gamma: SNR (linear, not dB)
%   lambda: eigenvalues of transmit covariance matrix
%   NSAMPLE: number of samples used in Monte-Carlo simulation
%   I: identity matrix of size NxN
%
% OUTPUTS
%   fmutual_mean_new: average mutual information
%
%------------------------------------------------------------

  H = (randn(M,N,NSAMPLE) + j*randn(M,N,NSAMPLE))/sqrt(2);
  fmutual_new = 0;
  for k=1:NSAMPLE
    H_k = H0 + H(:,:,k)*Rt_sqrt;
    S_k = gamma*H_k'*H_k;
    P = I + S_k*diag(lambda);
    fmutual_new = fmutual_new - log(real(det(P)));
  end
  fmutual_mean_new = fmutual_new/NSAMPLE;