function [R_remove_ICI,phi_best_comb,R_remove_ICI_line,phi_estimate]=EKF_ICI_fun(DATA_IN,size_fft,pilot_signalall_t,Nb,B,line_width,P_insert,mode)
if nargin==7
mode='cc';
end
[Nf,~]=size(DATA_IN);%Np为点数,Ns为符号数
R_remove_CPE=DATA_IN;%R频域
r_remove_CPE=ifft(R_remove_CPE,size_fft/2);%r时域
% pilot_F=R_remove_CPE;
% for k=1:P_insert:Nf
% pilot_F(k,:)=pilot_signalall(k,:);
% end
% pilot_signalall_t=ifft(pilot_F,size_fft/2);
%Nb=16;%1个时域符号分割为Nb个亚符号
r_sub=divided(r_remove_CPE,Nb);
pilot_t_sub=divided(pilot_signalall_t,Nb);
[Np,Ns]=size(r_sub);%Np为点数,Ns为符号数
phi_estimate=zeros(Np,Ns);
% P_insert=1;%需小于Np/Nb
% Qk=2*pi*line_width/(2*B);%系统噪声
Qk=0;%系统噪声
Vk=2*pi*line_width/(2*B);%量测噪声
phi0=0;%第一个符号的第一个数估计值
P0=0;
A=zeros(1,1,Np);
for k=1:Np
A(1,1,k)=pilot_t_sub(k,1);
end
z_tp=r_sub(:,1).';
[phi_tp,P0_i,pos]=KF_pilot_ICI(Np,1,1,1,Qk,A,Vk,z_tp,phi0,P0,P_insert);
phi_estimate(1:Np,1)=phi_tp.';
for i=2:Ns %第二个符号及以后
phi0=phi_estimate(pos,i-1);
% phi0=1;
P0=P0_i+Vk;
% P0=Vk;
% P0=P0_i;
A=zeros(1,1,Np);
for k=1:Np
A(1,1,k)=pilot_t_sub(k,i);
end
z_tp=r_sub(:,i).';
[phi_tp,P0_i,pos]=KF_pilot_ICI(Np,1,1,1,Qk,A,Vk,z_tp,phi0,P0,P_insert);
phi_estimate(1:Np,i)=phi_tp.';
end
phi_best=phi_estimate(pos,1:Ns);
%-------------------------------------------------
% phi_same=zeros(Np,Ns);
% for k=1:Ns
% phi_same(:,k)=same_insert(phi_estimate(:,k),P_insert);
% end
%
for k=1:Ns
phi_estimate(:,k)=line_insert3(phi_estimate(:,k),P_insert);
end
%-------------------------------------------------
temp_cc=repmat(phi_best,Np,1);%temp_cc是小台阶
temp_cc=reshape(temp_cc,1,Ns*Np);
% if nargin==8
% temp_line=divided(temp_cc,Nb);%temp_line是用线性差值
% temp_line=line_insert(temp_line,Nb);
% temp_line=combine(temp_line,Nb);
% end
% if strcmp(mode,'line')
% phi_best_comb=combine(temp_line,Nb);
% else
% phi_best_comb=combine(temp_cc,Nb);
% end
if strcmp(mode,'line')
temp_cc=line_insert3(temp_cc,Np);
% for k=1:length(temp_cc)
% if isnan(temp_cc(k))
% temp_cc(k)=temp_cc(k-1);
% end
% end
end
phi_best_comb=reshape(temp_cc,Nf,Ns/Nb);
for k=1:Ns/Nb
phi_best_comb(:,k)=line_insert3(phi_best_comb(:,k),Np);
end
phi_best_comb(Np+1:end,:)=phi_best_comb(1:end-Np,:);
phi_best_comb(1:Np,:)=repmat(phi_best_comb(Np+1,:),Np,1);
phi_best_comb(1,2:end)=phi_best_comb(end,1:end-1);
r_remove_ICI=r_remove_CPE.*exp(-1j*phi_best_comb);
R_remove_ICI=fft(r_remove_ICI,size_fft/2);
phi_estimate=reshape(phi_estimate,1,Ns*Np);
phi_estimate=reshape(phi_estimate,Nf,Ns/Nb);
r_remove_ICI_line=r_remove_CPE.*exp(-1j*phi_estimate);
R_remove_ICI_line=fft(r_remove_ICI_line,size_fft/2);
53627537536程序Kalman filtering.zip_nightvhw_willingnfx_卡尔曼滤波
版权申诉
191 浏览量
2022-07-15
08:30:36
上传
评论
收藏 135KB ZIP 举报
Kinonoyomeo
- 粉丝: 76
- 资源: 1万+