www.slide4math.com

 

This is my version of explanation. I would suggest you to come up with your own explanation. The best way would be for you to try explain this to somebody else in your own words.

 

Following is my version of explanation, but this is just an example. You may come up with a better version.

 

 

NR - CSI RS : p16, row 12

 

 

 

 

 

 

< Code 1 >

 

% NOTE : This code is based on the example in the Matlab document linked here. I modified the plotGrid() function for the visualization shown in this note.

 

carrier = nrCarrierConfig;

carrier.NSizeGrid = 4;

carrier.SubcarrierSpacing = 15;

carrier.NSlot = 1;

carrier.NFrame = 0;

 

csirs = nrCSIRSConfig;

csirs.CSIRSType = {'nzp'};

csirs.CSIRSPeriod = {[40 1]};

csirs.Density = {'three'};

csirs.RowNumber = [1];

csirs.SymbolLocations = {4};

csirs.SubcarrierLocations = {0};

csirs.NumRB = 4;

csirs.NID = 2;

 

powerCSIRS = 0;

sym = nrCSIRS(carrier,csirs);

csirsSym = sym*db2mag(powerCSIRS);

 

csirsInd = nrCSIRSIndices(carrier,csirs);

 

ports = max(csirs.NumCSIRSPorts);   % Number of antenna ports

txGrid = nrResourceGrid(carrier,ports);

 

txGrid(csirsInd) = csirsSym;

 

RelativePortNo = 0; % 3000+RelativePortNo corresponds to p in TS 38.211 section 7.4.1.5.3

plotGrid(size(txGrid),csirsInd,csirsSym,RelativePortNo+1,ports);

 

 

function plotGrid(gridSize,csirsInd,csirsSym,gridIndex,NoOfPort)

 

    figure()

    cmap = colormap(gcf);

    chpval = {20,2};

    chpscale = 0.25*length(cmap); % Scaling factor

 

    tempSym = csirsSym;

    tempSym(tempSym ~= 0) = chpval{1}; % Replacing non-zero-power symbols

    tempSym(tempSym == 0) = chpval{2}; % Replacing zero-power symbols

    tempGrid = complex(zeros(gridSize));

    tempGrid(csirsInd) = tempSym;

    NoOfRsPerPort = length(csirsSym)/NoOfPort;

 

    subplot(1,3,1);

    hold on;    

    image(chpscale*tempGrid(:,:,gridIndex)); % Multiplied with scaling factor for better visualization

    axis xy;

    xlim([0.5 14.5]);

    set(gca,'xtick',1:14);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10','11','12','13'});

    ylim([0.5 48.5]);

    set(gca,'ytick',[0 11 23 35 47]+1);

    set(gca,'yticklabel',{'0','11','23','35','47'});

    

    x = 1.5:1:14.5;

    y = 1.5:1:48.5;

    plot([x(:),x(:)],[0,48.5],'w-');

    plot([0,14.5],[y(:),y(:)],'w-');  

    y = 0.5:12:48.5;

    plot([0,14.5],[y(:),y(:)],'w-','LineWidth',2);  

   

    %grid();

    names = {'NZP CSI-RS','ZP CSI-RS'};

    clevels = chpscale*[chpval{:}];

    N = length(clevels);

    L = line(ones(N),ones(N),'LineWidth',8); % Generate lines

    % Index the color map and associate the selected colors with the lines

    set(L,{'color'},mat2cell(cmap( min(1+clevels,length(cmap) ),:),ones(1,N),3)); % Set the colors according to cmap

    % Create legend

    %legend(names{:});

 

    title('Reource Grid : CSI-RS')

    xlabel('OFDM Symbols');

    ylabel('Subcarriers');

    

    subplot(1,3,[2 3]);

 

    hold on;

    

    for y = 1:12

        for x = 1:14

            circle(x,y,0.5);

        end

    end

    

    symEnd = (gridIndex-1)*48*14 + 48;

    symIndexStart = (gridIndex-1)*NoOfRsPerPort+1;

    symIndexEnd = symIndexStart + NoOfRsPerPort-1;

    RePerGrid = 48*14;

    for i = symIndexStart:symIndexEnd

         vx1 = double(floor((csirsInd(i)-RePerGrid*(gridIndex-1))/48)+1);

         vy1 = double(mod(csirsInd(i),48));

         vx2 = vx1 + 0.5*real(csirsSym(i));

         vy2 = vy1 + 0.5*imag(csirsSym(i));

         if vy1 < 13

            line([vx1 vx2],[vy1 vy2],'Color','red');

            plot(vx2,vy2,'ro','MarkerFaceColor',[1 0 0],'MarkerSize',3);

         end

         tmpStr = sprintf("%d,%f,%f",csirsInd(i),vx1,vy1);

         disp(tmpStr);

    end    

    axis([0 15 0 13]);

    set(gca,'xticklabel',[]);set(gca,'yticklabel',[]);

    set(gca,'xtick',[]);set(gca,'ytick',[]);

    set(gca,'fontsize',8);

    daspect([1 1 1]);

    box on;

    title('CSI-RS value in the first PRB')

    xlabel('OFDM Symbols');

    ylabel('Subcarriers')

    

    set(gcf, 'Position', [100 100 800 600]);

    set(gcf,'color','w');

end

 

function circle(x,y,r)

    t = linspace(0,2*pi,20);

    plot(x+r*cos(t),y+r*sin(t),'k-');

end