您好,欢迎来到哗拓教育。
搜索
您的当前位置:首页kalman滤波在不同信噪比时的误码率matlab仿真程序

kalman滤波在不同信噪比时的误码率matlab仿真程序

来源:哗拓教育


0.50.450.40.350.30.250.20.150.10.050-20-15-10-505101520

Kalman滤波器在matlab仿真程序下的不同信噪比时的误码率: %multiuser_dectect.m clc; clear all; hold on

BER_sum=zeros(1,13);%设定求和误码率的零矩阵; BER_ave=zeros(1,13); %设定平均误码率的零矩阵; for m=1:10;%m的长度为1到10 间隔为1;

snr_in_db=-20:3:16;%定义信噪比的长度为-20到16 间隔为3;snr_in_db是信噪比用db表示

for i=1:length(snr_in_db);%i的长度为1到信噪比的长度 BER(i)= Kalman_S1(snr_in_db(i));%卡尔曼的误码率函数; end

BER_sum=BER_sum+BER;%误码率求和的算法 end;

BER_ave=0.1* BER_sum ; %误码率平均值的算法

semilogy( snr_in_db,BER_ave,'rd-');%y轴维数坐标图定义横坐标为信噪比,纵坐标为误码率; %Kalman_S1.m %Kalman algorithm

%synchronous CDMA同步cdma %channel: White Gaussis Noise function [p] = Kalman_S1(snr_in_dB)

SNR=10^(snr_in_dB/10); %信噪比由dB形式转化

sgma=1; % noise standard deviation is fixed 定义方差 Eb=sgma^2*SNR;

A=[sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb)]; K=length(A);

step=1000;%阶跃响应指令迭代1000次 N=31;%扩频增益n=31

%**************************************************************************

S1=[1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1];%a(n)=a(2)+a(-1)

S2=[1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1];%a(n)=a(3)+a(2)+a(1)+a(-1) for i=1:N

SS(i,:)=(S1~=[S2(i:N),S2(1:i-1)]); end SS=SS*2-1; S=SS(1:K,:);%K*N C(1,:)=SS(1,:);

C(2:N,:)=rand(N-1,N)*2-1; for i=2:N

rou=C(i,:)*C(1:i-1,:).'./dot(C(1:i-1,:),C(1:i-1,:),2).'; C(i,:)=C(i,:)-rou*C(1:i-1,:); end for i=1:N

C(i,:)=C(i,:)/sqrt(dot(C(i,:),C(i,:))); end

C_null=C(2:N,:);

%******************************************** b=zeros(K,step);

b=sign(rand(K,step)-0.5);

noiseN_step=randn(N,step); % Noise noiseN_step=sqrt(10./SNR)*noiseN_step; for i=1:K

Ab(i,:)=A(i)*b(i,:);

end

yN_step=(Ab.'*S).';

yN_step=yN_step+noiseN_step; %****************************** KK=eye(N-1); w=zeros(N-1,1); c=zeros(N,1);

%Kalman multiuser detection for i=1:step

d=C_null*yN_step(:,i); g=KK*d*(d'*KK*d+1)^(-1); KK=KK-g*d'*KK; yy=S(1,:)*yN_step(:,i); w=w+g*(yy-d'*w); c=S(1,:).'-C_null.'*w;

y(i)=sign(real(c.'*yN_step(:,i))); end

p= length(find(y - b(1,:)))/length(y);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo2.com 版权所有 湘ICP备2023021991号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务