⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plot_mimo.m

📁 mimo信道容量的matlab的分析mimo信道容量的matlab的分析mimo信道容量的matlab的分析mimo信道容量的matlab的分析
💻 M
字号:
% Plots the impulse responses, the PDPs, the correlation properties
% and the Doppler spectra of the MIMO channel stored in the global
% variable H produced by script example_MIMO.m. plot_MIMO.m also
% relies on other global variables of example_MIMO.m
%
%
% STANDARD DISCLAIMER
%
% CSys is furnishing this item "as is". CSys does not provide any
% warranty of the item whatsoever, whether express, implied, or
% statutory, including, but not limited to, any warranty of
% merchantability or fitness for a particular purpose or any
% warranty that the contents of the item will be error-free.
%
% In no respect shall CSys incur any liability for any damages,
% including, but limited to, direct, indirect, special, or
% consequential damages arising out of, resulting from, or any way
% connected to the use of the item, whether or not based upon
% warranty, contract, tort, or otherwise; whether or not injury was
% sustained by persons or property or otherwise; and whether or not
% loss was sustained from, or arose out of, the results of, the
% item, or any services that may be provided by CSys.
%
% (c) Laurent Schumacher, AAU-TKN/IES/KOM/CPK/CSys - February 2002

close all;

figure(1)
colour = ['b','r','k','m','g','c'];
abscissa = (1:size(H,4)).*NumberOfChipsPerIteration.*ChipOversamplingFactor./ChipRate_Hz;
for ii = 1:NumberOfTxAntennas
    for jj = 1:NumberOfRxAntennas
        for kk = 1:NumberOfPaths
            subplot(NumberOfTxAntennas,NumberOfRxAntennas,((ii-1)*NumberOfRxAntennas)+jj),...
                semilogy(abscissa,abs(reshape(H(ii,jj,kk,:),1,NumberOfIterations)),colour(kk)), ...
                hold on;
        end;
        grid;
        xlabel('Time [s]');
        title(['Tx#',num2str(ii),' - Rx#',num2str(jj)]);
    end;
end;

% Check PDP

figure(2);
for ii = 1:NumberOfTxAntennas
    for jj = 1:NumberOfRxAntennas
        pdp = zeros(1,NumberOfPaths);
        for kk = 1:NumberOfPaths
            pdp(kk) = sum((abs(reshape(H(ii,jj,kk,:),1,NumberOfIterations))).^2)./NumberOfIterations;
        end;
        if ((sum(pdp) < .9) | (sum(pdp) > 1.1))
            disp('Warning! sum(pdp) <> 1');
        end;
        subplot(NumberOfTxAntennas,NumberOfRxAntennas,(ii-1)*NumberOfRxAntennas+jj),...
            stem(1:NumberOfPaths,10*log10(PDP_linear(1,:)./PDP_linear(1,1)),'r--'), hold on, ...
            stem(1:NumberOfPaths,10*log10(pdp./pdp(1)),'b'), grid,...
            title(['Tx#',num2str(ii),' - Rx#',num2str(jj),' - Sum PDP = ',num2str(sum(pdp))]);
        axe    = axis;
        axe(1) = 1;
        axis(axe);
        if (jj==1)
            subplot(NumberOfTxAntennas,NumberOfRxAntennas,(ii-1)*NumberOfRxAntennas+jj),...
                ylabel('Power [dB]');
        end;
        if (ii==NumberOfTxAntennas)
            subplot(NumberOfTxAntennas,NumberOfRxAntennas,(ii-1)*NumberOfRxAntennas+jj),...
                xlabel('Tap index');
        end;
    end;
end;

% Check correlation

figure(3)
Rcomplex = zeros(NumberOfPaths,NumberOfTxAntennas*NumberOfRxAntennas,NumberOfTxAntennas*NumberOfRxAntennas);
for ii=1:NumberOfPaths
    for jj=1:NumberOfTxAntennas
        for kk=1:NumberOfRxAntennas
            ll = (jj-1)*NumberOfRxAntennas + kk;
            for mm=1:NumberOfTxAntennas
                for nn=1:NumberOfRxAntennas
                    oo                 = (mm-1)*NumberOfRxAntennas + nn;
                    ha                 = reshape(H(jj,kk,ii,:),NumberOfIterations,1);
                    hb                 = reshape(H(mm,nn,ii,:),NumberOfIterations,1);
                    temp               = corrcoef(ha,hb);
                    Rcomplex(ii,ll,oo) = temp(1,2);
                end;
            end;
        end;
    end;
end;
for ii = 1:NumberOfPaths
    index_low  = (ii-1)*NumberOfTxAntennas*NumberOfRxAntennas+1;
    index_high = ii*NumberOfTxAntennas*NumberOfRxAntennas;
    for jj = 1:NumberOfTxAntennas*NumberOfRxAntennas
        for kk = 1:NumberOfTxAntennas*NumberOfRxAntennas
            temp(jj,kk) = abs(Rcomplex(ii,jj,kk)).^2;
        end
    end
    subplot(2,NumberOfPaths,ii),...
        mesh(1:NumberOfTxAntennas*NumberOfRxAntennas,1:NumberOfTxAntennas*NumberOfRxAntennas,temp),...
        title(['\langle h_{ij}^',num2str(ii),', h_{kl}^',num2str(ii),'\rangle']);
    subplot(2,NumberOfPaths,NumberOfPaths+ii),...
        plot(1:NumberOfTxAntennas*NumberOfRxAntennas, temp(1,:), 'b', ...
             1:NumberOfTxAntennas*NumberOfRxAntennas, ...
             abs(reshape(R(index_low:index_high,index_low), 1, ...
             NumberOfTxAntennas*NumberOfRxAntennas)).^2, 'r--'),...
             title(['\langle h_{11}^',num2str(ii),', h_{kl}^',num2str(ii),'\rangle']),...
             xlabel(['(k-1)*',num2str(NumberOfRxAntennas),' + l']);
    axe    = axis;
    axe(1) = 1;
    axe(3) = 0;
    axis(axe);
    grid;
    if (ii == 1)
        subplot(2,NumberOfPaths,ii), zlabel('Correlation coefficient');
        subplot(2,NumberOfPaths,NumberOfPaths+ii), ylabel('Correlation coefficient');
    end;
end;

% Check Doppler spectrum

figure(4)
normalised_frequency = (-NumberOfIterations/2+1:1:NumberOfIterations/2)...
                       * (ChipRate_Hz * ChipOversamplingFactor) ...
                       / (NumberOfChipsPerIteration * NumberOfIterations * Max_Doppler_shift);
for ii = 1:NumberOfTxAntennas
    for jj = 1:NumberOfRxAntennas
        for kk = 1:NumberOfPaths
            spectrum = (abs(fftshift(fft(reshape(H(ii, jj, kk, :), 1, NumberOfIterations))))./NumberOfIterations);
            subplot(NumberOfTxAntennas*NumberOfRxAntennas,NumberOfPaths,...
                (((ii-1)*NumberOfRxAntennas)+(jj-1))*NumberOfPaths+kk),plot(normalised_frequency,spectrum);
            axe    = axis;
            axe(1) = max(-2,axe(1));
            axe(2) = min(2,axe(2));
            axis(axe);
            lower_bound = line(ones(1,2),[axe(3) axe(4)]);
            set(lower_bound,'Color',[1 0 0],'LineStyle',':');
            upper_bound = line(-1*ones(1,2),[axe(3) axe(4)]);
            set(upper_bound,'Color',[1 0 0],'LineStyle',':');
            title(['Tap h_{',num2str(ii),num2str(jj),'}^',num2str(kk)]);
        end;
    end;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -