自适应滤波器系统判别LMS、RLS matlab代码实现

自适应滤波器 · 系统辨识

1.系统框图

在这里插入图片描述

2. 实验步骤

在这里插入图片描述

3.实验代码
3.1 生成未知系统
  • 假设FIR系统(阶数设置为M)

    利用fir1函数生成FIR滤波器,用stem画出系统时域的冲激响应图,利用freqz和unwrap函数画出系统频域的幅度和相位响应

    % step1 定义未知系统(FIR滤波器)的阶数和截止频率
    M = 32;   % 滤波器阶数
    h_true = fir1(M, 0.3); % 生成未知系统
    
    % 分析频率响应
    figure(1);
    subplot(3,1,1);
    stem(h_true);
    title('未知系统的冲激响应');
    grid on;
    
    % 绘制相位响应
    subplot(3, 1, 2);
    [H,w] = freqz(h_true, 1); 
    plot(w/pi,abs(H));
    grid on;
    title('未知系统的幅度响应');
    ylabel('幅度');
    
    subplot(3,1,3);
    plot(w/pi, unwrap(angle(H)));
    grid on;
    title('未知系统的相位响应');
    ylabel('弧度');
    

在这里插入图片描述

3.2 产生输入白噪声信号
% step2 产生随机输入的白噪声信号
N_filter = M + 10; % 估计自适应滤波器阶数
N = 1000; % 信号长度
x = randn(N, 1); % 生成输入信号
3.3 初始化LMS自适应滤波器
% step3 初始化自适应滤波器
P = sum(x.^2)/N;  % 输入信号功率
mu = 1/(N_filter*P);
mu = mu /10;
d = filter(h_true, 1, x); % 生成期望信号

w_lms = zeros(N_filter, 1);
mse_values = zeros(N-N_filter+1, 1);
err_lms = zeros
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值