📄 volterra_main_luzhenbo.m
字号:
% 混沌时间序列的 Volterra 自适应预测(一步预测) -- 主函数% 参考文献:朱昀.水声信号非线性分析方法研究.西北工业大学博士学位论文.2002.06% P28-38clcclearclose all% dx/dt = sigma*(y(t)-x(t))% dy/dt = r*x(t) - y(t) - x(t)*z(t)% dz/dt = -b*z(t) + x(t)*y(t)% y = [-1;0;1]; % 起始点 (3x1 的列向量)% h = 0.01; % 积分时间步长% 积分方程用四阶 Runge-Kutta 法积分方程组得数值解% 数据除去前面 8000 个点,用后面 5000 个点load('LorenzData.mat') % 加数 Lorenz 离散数据 x,y,z,共 5000 个点x = x(1:500);X = [x-mean(x)]/[max(x)-min(x)]; % 归一化到均值为 0,振幅为 1Times = 5e+3 % 最小二乘迭代次数tau = 10 % 重构时延m = 3 % 重构维数p = 3 % Volterra 级数阶数%--------------------------------------------------% 混沌序列的相空间重构 (phase space reconstruction)[xn,dn] = PhaSpaRecon(X,tau,m);% 输入参数: s 混沌序列% tau 重构时延% m 重构维数% 输出参数: xn 相空间中的点序列(每一列为相空间中一个点)% dn 一步预测的目标%------------------------------------------------------interval = 4;[xn_train,dn_train,xn_test,dn_test] = TrainTestSample(interval,xn,dn);% 相空间中点的轨迹分解成:训练样本与测试样本% 在所有样本中,每隔 interval 个样本为训练样本,其余为测试样本%--------------------------------------------------% 训练与测试[Hn,len_Hn] = Volterra_train(xn_train,dn_train,p,Times);% 输入参数: xn_train 训练样本(每一列为一个样本)% dn_train 训练目标% p Volterra 级数阶数% Times 最小二乘估计迭代次数% 输出参数: Hn 最小二乘估计滤波器权矢量 Hn% len_Hn 权矢量长度dn_pred = Volterra_test(xn_test,p,Hn);% 输入参数: xn_test 测试样本% p Volterra 级数阶数% Hn 最小二乘估计滤波器权矢量 Hn% 输出参数: dn_pred 一步预测值err = dn_test - dn_pred;err_mse = sum(err.^2)/length(err) % 预测的均方误差n = 1:length(dn_test);plot(n,dn_test,'r+:',n,dn_pred,'bo:')title('+为真值,o为预测值')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -