⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wf.m

📁 实现多通道后滤波技术
💻 M
字号:
function y=wf(xn_2,xn_1,a)
% function w=wf(xn_2,xn_1,a)
% y为滤波后输出信号
% xn_2为M*length(sinal)的信号矩阵
% xn_1为要增强的信号
% a为滤波器参数因子
[M,N]=size(xn_2);P=length(xn_1);
if M>N
    xn_2=conj(xn_2');
    T=M; M=N; N=T;
end
if P==1
    xn_1=conj(xn_1');
end
len=N;
enflen=128;enfshift=enflen/2;
for m=1:M
    p=1;
    while (p-1)*enfshift+enflen<len
        xn_2_temp(p,:)=xn_2(m,(p-1)*enfshift+1:(p-1)*enfshift+enflen);        
        xn_enf(m,p,:)=xn_2_temp(p,:);%估计滤波器系数分支
        p=p+1;
    end
    xn_enf2(m,:)=xn_2(m,(p-2)*enfshift+enflen+1:len);%估计滤波器系数分支残余
end
enf=p-1;%帧数
for p=1:enf
    temp1=zeros(enf,enflen);temp2=zeros(enf,enflen);
    for m=1:M
        temp00(p,:)=xn_enf(m,p,:).^2;%信号的自相关估计
        temp1(p,:)=temp1(p,:)+temp00(p,:);
        for m0=m:M
            if m~=m0
                temp11(p,:)=abs(xn_enf(m,p,:).*xn_enf(m0,p,:));%信号的互相关估计
                temp2(p,:)=temp2(p,:)+temp11(p,:);
            end
        end
    end
    rx(p,:)=temp1(p,:)/M;
    rs(p,:)=2*temp2(p,:)/((M-1)*M);
end
temp1=zeros(1,len-((enf-1)*enfshift+enflen));
temp2=zeros(1,len-((enf-1)*enfshift+enflen));
for m=1:M
    temp1=temp1+xn_enf2(m,:).^2;
    for m0=m:M
        if m~=m0
            temp2=temp2+abs(xn_enf2(m,:).*xn_enf2(m0,:));
        end
    end
end
rx1=temp1/M;
rs1=2*temp2/((M-1)*M);
%维纳滤波
p=1;
while (p-1)*enfshift+enflen<len
    xn_1_temp(p,:)=xn_1((p-1)*enfshift+1:(p-1)*enfshift+enflen); 
    y1(p,:)=xn_1_temp(p,:).*((rs(p,:)./rx(p,:)).^a);
    p=p+1;
end
xn_1_enf=xn_1((p-2)*enfshift+enflen+1:len);%残余
y2=xn_1_enf.*((rs1./rx1).^a);
%--------------------------------------------%
y=[];
for p=1:enf-1
    y=[y y1(p,1:enfshift)];
end
y=[y y1(p+1,:) y2];


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -