📄 volterra_train.m
字号:
function [Hn,len_filter] = Volterra_train(xn_train,dn_train,p,Times);
% 混沌时间序列的 Volterra 自适应预测 -- 训练部分
% [Hn,len_filter] = Volterra_train(s_train, tau, m, p, Times)
% 输入参数: xn_train 训练样本(每一列为一个样本)
% dn_train 训练目标
% p Volterra 级数阶数
% Times 最小二乘估计迭代次数
% 输出参数: Hn 最小二乘估计滤波器权矢量 Hn
% len_filter 权矢量长度
%--------------------------------------------------
% 由相空间构造 Volterra 自适应 FIR 滤波器的输入信号矢量 Un
[Un,len_filter] = PhaSpa2VoltCoef(xn_train,p);
% 输入参数: xn_train 相空间中的点序列(每一列为一个点)
% p Volterra 级数阶数
% 输出参数: Un Volterra 自适应 FIR 滤波器的输入信号矢量 Un
% len_filter FIR 滤波器长度
%----------------------------------------
% 最小二乘估计滤波器权矢量 Hn(自适应MSE算法)
M = len_filter;
N = size(xn_train,2);
R = zeros(M,M);
P = zeros(M,1);
trR = 0;
for i = 1:N % i 取值范围 1 -> N-M+1
R = R + Un(:,i)*Un(:,i)';
P = P + dn_train(i)*Un(:,i);
trR = trR + sum(Un(:,i).^2);
end
R = R./N; % 输入信号自相关矩阵,见式(3.10)
P = P./N; % 期望信号与输入信号的互相关矢量,见式(3.11)
trR = trR/N; % 矩阵迹的估计,见式(3.50)
mu_max = 1/trR; % 必须满足式(3.49)
mu = mu_max*0.95;
Hn0 = zeros(M,1); % 初始化滤波系数矢量
for i=1:Times-1
DeltaWn = -2*mu*(R*Hn0-P); % 滤波系数矢量增量,见式(3.40)
Hn = Hn0 + DeltaWn; % 滤波系数矢量更新,见式(3.40)
Hn0 = Hn;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -