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

📄 lab2_2.m

📁 DSP II作业
💻 M
字号:
% lab2_2
% 实现自适应谱线增强,画出输出信号y'(n)和误差信号e(n)的波形

clear
clc

% 初始化
D=20;               % 由第一小题,满足D>2
N=500;
M=5;   
delta=0.005;        % 确定步长
H=zeros(M,N);

% 产生一个均匀分布,均值为零,功率为0.01的白噪声信号v(n)
a=sqrt(0.01);
v=rand(1,N);
v=v-mean(v);
v=a*v;

% 生成x2(n)序列
x2(1)=v(1);
x2(2)=v(2)+2*v(1);
for i=3:N
     x2(i)=v(i)+2*v(i-1)+v(i-2);
end

% 生成x1(n)序列
n=1:N;
phi=2*pi*rand(1);
x1=sin(0.05*pi*n+phi);

% 生成y(n)序列
y=x1+x2;

% 生成x(n)序列,由自适应谱线增强框图可知x(n)是y(n)经过D延迟得到的
for i=1:N
    if(i>D)
        x(i)=y(i-D);
    else
        x(i)=0;
    end
end

% 自适应迭代,求得滤波器系数H(n)
e(1)=0;
for i=1:N-1
    temp=0;
    for j=1:M
        if(i>=j)
            temp=temp+H(j,i)*x(i-j+2);
        end
    end
    e(i+1)=y(i+1)-temp;
    for j=1:M
        if(i>=j)
            H(j,i+1)=H(j,i)+delta*e(i+1)*x(i-j+2);
        else
            H(j,i+1)=H(j,i);
        end
    end
end

% y(n)和e(n)之差即为新生成的y~(n)
y_new=y-e;

% 求出各信号的功率谱
power_y_new=abs(fft(y_new)).^2;
power_e=abs(fft(e)).^2;
power_x1=abs(fft(x1)).^2;
power_x2=abs(fft(x2)).^2;

% 画y~(n),e(n),x1(n)和x2(n)的波形图
subplot(4,1,1);
plot(n,y_new,'m');
title('波形图');
subplot(4,1,2);
plot(n,e,'b');
subplot(4,1,3);
plot(n,x1,'m');
subplot(4,1,4);
plot(n,x2,'b');

% 画y~(n),e(n),x1(n)和x2(n)的功率谱
figure
subplot(4,1,1);
plot(n,power_y_new,'m');
title('功率谱');
subplot(4,1,2);
plot(n,power_e,'m');
subplot(4,1,3);
plot(n,power_x1,'m');
subplot(4,1,4);
plot(n,power_x2,'b');

% 画迭代系数h1(n)和h2(n)的曲线
figure
subplot(2,1,1);
plot(n,H(1,:),'m');
title('曲线');
subplot(2,1,2);
plot(n,H(2,:),'b');

⌨️ 快捷键说明

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