Matlab:什么是恒模算法的 BER 性能和滤波器函数中的问题

Matlab : What is the BER performance of Constant Modulus Algorithm and issue in filter function

我需要帮助绘制不同信噪比的 BPSK 调制方案的比特误码曲线或符号误码曲线或 Eb/N0。该图应显示模拟曲线与理论曲线,但我无法弄清楚在使用恒模算法作为均衡器时如何缓解这些问题:

(1)

 Error using  * 
Inner matrix dimensions must agree.

Error in BER_BPSK_CMA (line 50)
        yy = w'*x;

(2) 我想使用 filter 函数而不是 conv 来建模移动平均通道模型 chanOut = filter(ht,1,s)。但是,当我使用 filter 时,出现错误。我如何在这里使用 filter 功能?

(3)误码率计算

已解决问题 1 的更新代码。但是,我仍然无法使用 filter 并且不确定 BER 曲线是否正确。 下面是我写的代码:

% Script for computing the BER for BPSK modulation in 3 tap ISI 
% channel 


clear
N  = 10^2; % number of bits or symbols
Eb_N0_dB = [0:15]; % multiple Eb/N0 values
K = 3; %number of users
nTap = 3;
mu = 0.001;
   ht = [0.2 0.9 0.3]; 
   L  = length(ht);
for ii = 1:length(Eb_N0_dB)

   % Transmitter
   ip = rand(1,N)>0.5; % generating 0,1 with equal probability
   s = 2*ip-1; % BPSK modulation 0 -> -1; 1 -> 0 

   % Channel model, multipath channel

chanOut = conv(s,ht);
%   chanOut =  filter(ht,1,s);  %MA 
   n = 1/sqrt(2)*[randn(1,N+length(ht)-1) + j*randn(1,N+length(ht)-1)]; % white gaussian noise, 0dB variance 

   % Noise addition
   y = chanOut + 10^(-Eb_N0_dB(ii)/20)*n; % additive white gaussian noise


   %CMA
  Le =20; %Equalizer length

   e = zeros(N,1);     % error
w = zeros(Le,1);    % equalizer coefficients
w(Le)=1;            % actual filter taps are flipud(w)!  
yd = zeros(N,1);
r = y';
% while(1)
    for i = 1:N-Le,
        x = r(i:Le+i-1);
        %x = r(i:(Le+i-1));
        yy = w'*x;
        yd(i)= yy;
        e(i) = yy^2 - 1;
        mse_signal(ii,i) = mean(e.*e);
        w = w - mu * e(i) * yy * x;

    end

   sb=w'*x;   % estimate symbols (perform equalization)

   % receiver - hard decision decoding
   ipHat = real(sb)>0;

   % counting the errors
   nErr_CMA(ii) = size(find([ip- ipHat]),2);
   % calculate SER




end
simBer_CMA = nErr_CMA/N;

theoryBer = 0.5*erfc(sqrt(10.^(Eb_N0_dB/10))); % theoretical ber

for i=1:length(Eb_N0_dB),
   tmp=10.^(i/10);
   tmp=sqrt(tmp);
  theoryBer(i)=0.5*erfc(tmp);
end

figure
semilogy(theoryBer,'b'),grid;
hold on;



semilogy(Eb_N0_dB,simBer_CMA,'r-','Linewidth',2);

%axis([0 14 10^-5 0.5])
grid on
legend('sim-CMA');
xlabel('Eb/No, dB');
ylabel('Bit Error Rate');
title('Bit error probability curve for BPSK in ISI with CMA equalizer');

  1. 您的第一个问题很容易解决:将行更改为

    x = y(i:(Le+i-1));
    
  2. 你对 filter 的调用看起来没问题。你遇到了哪个错误?

  3. 也许 this 是一个开始寻找的地方。 或者 here(图 4 是您想要的情节类型吗?)

这三行有错误:

sb=w'*x;   % estimate symbols (perform equalization)

% receiver - hard decision decoding
ipHat = real(sb)>0;

它们在 while 循环内工作,但您现在正在执行 post 估计,因此正确的行是:

sb=conv(w,y);   % estimate symbols (perform equalization)

% receiver - hard decision decoding
ipHat = real(sb(Le+1:end-1))>0;   % account for the filter delay

输出仍然存在一些问题...但我无法在分析中进行更深入的分析。