【问题标题】:MIMO channel with CSI in MATLABMATLAB 中带有 CSI 的 MIMO 通道
【发布时间】:2014-03-10 15:00:37
【问题描述】:

我现在正在做一个 MATLAB 来计算具有 CSI 的 MIMO 通道的容量。 因此,我需要使用水填充来获得功率水平....但是我有一些问题,结果图是向下凹的。 谁能给我一些建议我做错了什么?

clear 
nr=2;
nt=2;
minN = min(nr,nt);
transmitSNR = -20;

for k=1:21     %- set the value of Po/No in dB 
for m=1:1000

    for t=1:nr
        for y=1:nt
             a=1/sqrt(2)*randn(nr,nt);
             b=1/sqrt(2)*randn(nr,nt);
             H=a+1i*b;  %- complex form of H 
         end
    end        
   %- Hr=R^1/2*H;        
    [S V D]=svd(H);
    cap(m)=0;
    for n=1:1:minN        
        lambda(n) = V(n,n);
    end

        [lambda L] = sort(lambda,'descend');
        lambda = lambda(find(lambda > 0));      % ignoring non-positive eigenvalues
        pl = -1;
        try
            while (min(pl) < 0)
                mu = (transmitSNR + sum(1 ./ lambda)) / length(lambda);
                pl = mu - 1 ./ lambda;
                lambda = lambda(1:end-1);
            end
        catch
            disp('There exists no water filling level for the input eigenvalues. Check your data and try again')
        end
        pl = [pl; zeros(length(L) - length(pl), 1)]; % assigning zero power for weak eigen-modes 
        pl(L) = pl;

        for n=1:1:minN
             cap(m) = cap(m) + sum( log2(1 + pl(n).*lambda));

        end
    end           

capacity(k)=mean(cap);
SNR(k) = transmitSNR;
transmitSNR = transmitSNR+2;    
end
plot (SNR,capacity,'d-m'); hold on;
title('Graph of SNR & channel capacity');
xlabel('SNR,dB');
ylabel('Channel capacity');

【问题讨论】:

标签: matlab signal-processing telecommunication


【解决方案1】:

我对上述问题的解决方法是:

SNR_dB=-20; % Here is your SNR in dB
transmitSNR=10.^(SNR_dB./10); % Here is the conversion

【讨论】:

  • 欢迎来到 Stack Overflow!请考虑编辑您的帖子,以添加更多关于您的代码的作用以及它为什么会解决问题的解释。一个大部分只包含代码的答案(即使它正在工作)通常不会帮助 OP 理解他们的问题。
猜你喜欢
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2018-05-16
  • 2022-09-30
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多