首页 > 解决方案 > 在图表上标记点 - matlab

问题描述

晚安。如何用位标记图形点?这是我的代码:

  L = 1e4;
    SNRdB = 0:28;
    SNR = 10.^(SNRdB/10); 
    r = 10.^(SNRdB/10);
    alpha = 0.3;


    % Número máximo de iterações para um único SNR
    max_run = 100;


    for sk = 1:length(SNRdB)
        
        for tk = 1:max_run
            
            % 1 ou -1 para sinal em fase (an)
            x_inp_I = sign(rand(1,L)- 0.5);
         
  

      % 1 ou -1 para sinal de quadratura (bn)
        x_inp_Q = sign(rand(1,L)- 0.5);
        
        QPSK = x_inp_I + 1i .* x_inp_Q;
                 
        % Gera bits de marca d'água aleatórios (dI)
        Bit_wat_I = sign(rand(1,L)- 0.5);
        
        % Gera bits de marca d'água aleatórios (dQ)
        Bit_wat_Q = sign(rand(1,L)- 0.5); 
        
        
        % encontrar a equação
        for k = 1:L 
    
    if Bit_wat_I(k) == 1  &&  Bit_wat_Q(k) == 1     
        
Bit_enviado(k) = (x_inp_I(k) .* ((sqrt(1-alpha)) + (sqrt(alpha)))) + (1i .* x_inp_Q(k) * (sqrt(1-alpha)) + (sqrt(alpha))));  
                      
                end             
                 
            end
            
        end
    end

情节是这样的:

在此处输入图像描述

我想这样标记它: 在此处输入图像描述

标签: matlab

解决方案


以下代码将生成与您的第二张图片类似的图形

rM = [-3 -1 1 3];
strLabel = dec2bin(0:15);

figure
set(gcf, 'Color', 'White')
hold on
nInc = 1;
for nX = rM
    for nY = rM
        plot(nX, nY, 'b+')
        text(nX, nY-0.3, strLabel(nInc,:), ...
                'HorizontalAlignment', 'Center')
        nInc = nInc + 1;
    end
end
xlabel('In-Phase')
ylabel('Quadrature')
title('Scatter plot')
set(gca, 'XTick', -4:4)
set(gca, 'YTick', -4:4)
axis([-4 4 -4 4])
axis square
grid off
box on

推荐阅读