【卡尔曼滤波】基于多模型卡尔曼滤波检测多用户噪声无线系统中的信号研究(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客   

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本文基于多模型卡尔曼滤波检测多用户噪声无线系统中的信号研究。

📚2 运行结果

 部分代码:

                    %Kalman Filter for user k matched to symbol 1
                    j=4;
                    B((k-1)*4+1:4*k,(k-1)*4+1:4*k) = blkdiag(sym(j,1)*eye(2), sym(j,2)*eye(2));
                    xp1 = xh0m(:,j);   
                    Pp1 = Ph0m(:,:,j) + Q;
                    C(:,:,j) = LT * A * B;     
                    H = C((k-1)*4+1:4*k,(k-1)*4+1:4*k,j);
                    if k ~= 1
                    H1= C((k-1)*4+1:4*k,1:(k-1)*4,j);
                    xp3 = (H1 * xp2);
                    V1 = H1*P*ctranspose(H1);
                    end;
                    [xh4(:,k),Ph4(:,:,k),Rlike(j)]=kalman(y1((k-1)*4+1:k*4,t),H,xp1,xp3,V,V2,V1,Pp1);
                    
                    Rlike=real(Rlike);
                    Rsumlike=sum(Rlike);
                    if (Rsumlike~=0),
                        Rlike=Rlike/Rsumlike;
                    end;
                    like=Rlike;
                    if(like==0),
                        like
                        pause;
                    end;
                    %                 like=real(like);
                    
                    %Calculation of mode probabilities
                    for j=1:M,
                        modePr(j,k,2)= like(j) * ( Tr(1,j)* modePr(1,k,1) + Tr(2,j)* modePr(2,k,1) + Tr(3,j)* modePr(3,k,1) + Tr(4,j)* modePr(4,k,1) );     %posterior probabilities
                    end;
                    summode=sum(modePr(:,k,2));
                    modePr(:,k,2)=modePr(:,k,2)/summode;
                    [a,bk] = max(modePr(:,k,2));
                    mode = zeros(4,1); 
                    mode(bk,1)  = 1;
                    if (isnan(modePr(:,k,2))~=0)
                        modePr(:,k,2)
                        pause;
                    end;
                    %hard cancellation
                    temp = [xh1(:,k) xh2(:,k) xh3(:,k) xh4(:,k) ];
                    %hard cancellation
                    B((k-1)*4+1:k*4,(k-1)*4+1:k*4)=blkdiag(sym(bk,1)*eye(2),sym(bk,2)*eye(2));
                    xp2((k-1)*4+1:k*4,1) = temp(:,bk);
                    temp = [Ph1(:,:,k) Ph2(:,:,k) Ph3(:,:,k) Ph4(:,:,k) ];
                    P((k-1)*4*L+1:k*4*L,(k-1)*4*L+1:k*4*L) = temp(:,(bk-1)*4*L+1:bk*4*L);
                end;
                Rchmse(1:4,(t-1)*2+1) = Rchmse(1:4,(t-1)*2+1) + conj(abs(real(xp2(1:4,1))) - abs(real(g(1:4,(t-1)*2+1+400)))) .* (abs(real(xp2(1:4,1))) - abs(real(g(1:4,(t-1)*2+1+400))));
                Ichmse(1:4,(t-1)*2+1) = Ichmse(1:4,(t-1)*2+1) + conj(abs(imag(xp2(1:4,1))) - abs(imag(g(1:4,(t-1)*2+1+400)))) .* (abs(imag(xp2(1:4,1))) - abs(imag(g(1:4,(t-1)*2+1+400))));
                ghat(1:4,(t-1)*2+1) = xp2(1:4,1);
                
                %FOR TIME i
                
                B   = zeros(K*4, K*4);
                xp1 = zeros(4, 1);
                Pp1 = zeros(4, 4);
                xp2 = zeros(0,1);
                xp3 = zeros(4,1);
                Pp2 = zeros(4, 4);
                P   = zeros(0, 0);
                V1  = zeros(4,4);
                V2  = zeros(4,4);
                H1  = zeros(0, 0);
                for k=1:K,
                    
                    Tr  = [0 0 1 0; 1 0 0 0; 0 0 0 1; 0 1 0 0];         %for next time instant all possible transitions are known
                    %                  Tr  = [0.00001 0.00001 0.99997 0.00001; 0.99997 0.00001 0.00001 0.00001; 0.00001 0.00001 0.00001 0.99997; 0.00001 0.99997 0.00001 0.00001];         %for next time instant all possible transitions are known
                    %calculation of mixing probabilities
                    
                    for i=1:M,
                        for j=1:M,
                            mu(i,j) = Tr(i,j)*modePr(i,k,2);              %prior probabilities, mode prob is from the previous time instant in ST matrix
                        end;
                    end;
                    %MIXING
                    for j=1:M,
                        xh0m(:,j) = xh1(:,k)*mu(1,j) + xh2(:,k)*mu(2,j) + xh3(:,k)*mu(3,j) + xh4(:,k)*mu(4,j);
                        Ph0m(:,:,j)= mu(1,j)*(Ph1(:,:,k) + (xh1(:,k) - xh0m(:,j))*ctranspose(xh1(:,k)-xh0m(:,j)) ) + mu(2,j)*(Ph2(:,:,k) + (xh2(:,k)-xh0m(:,j))*ctranspose(xh2(:,k)-xh0m(:,j))) + mu(3,j)*(Ph3(:,:,k) + (xh3(:,k) - xh0m(:,j))*ctranspose(xh3(:,k)-xh0m(:,j)) ) + mu(4,j)*(Ph4(:,:,k) + (xh4(:,k)-xh0m(:,j))*ctranspose(xh4(:,k)-xh0m(:,j)));
                    
                    end;
                    
                    
                    %Mode matched filtering

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]史飞,牛慧莹,王济,吕鹏.一种采用卡尔曼滤波与正则匹配的信号盲检测法[J].无线电通信技术,2023,49(01):182-186.

🌈4 Matlab代码实现


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部