基于ANFIS的自适应噪声消除
这个例子展示了如何通过构造和调整ANFIS模型来进行自适应非线性噪声消除。
信号与噪音
定义一个假设的信息信号,x
,在6秒内以100赫兹采样。
时间= (0:0.01:6)';X = sin(40./(时间+0.01));情节(时间,x)标题(“信息信号x”)包含(“时间”) ylabel (“x”)
假设x
没有干扰信号无法测量,
,是由另一个噪声源发出的,
,通过某种未知的非线性过程。
生成并绘制噪声源 .
N1 = randn(size(time));情节(时间、n1)标题(“噪声源n_1”)包含(“时间”) ylabel (“n_1”)
假设干扰信号, ,是由一个未知的非线性方程产生的:
把这个非线性函数画成曲面。
域= linspace(min(n1),max(n1),20);[xx,yy] = meshgrid(domain,domain);Zz = 4*sin(xx).*yy./(1+yy.^2);冲浪(yy, xx zz)包含(“n_1 (k)”) ylabel (“n_1 (k - 1)”) zlabel (的甲烷(k)的)标题(“未知干扰信道特征”)
计算干扰信号, ,来自噪声源, ,并绘制两个信号。
N1d0 = n1;% n1,延迟为0N1d1 = [0;n1d0(1:长度(n1d0) 1)];% n1,延迟1N2 = 4*sin(n1d0).*n1d1./(1+n1d1.^2);%的干扰Subplot (2,1,1) plot(time,n1) ylabel(“n_1”)包含(“时间”)标题(的噪声源) subplot(2,1,2) plot(时间,n2)“甲烷”)标题(干扰信号的)包含(“时间”)
与 通过前面提到的高度非线性过程。然而,从图中可以看出,这两个信号并没有以任何方式相互关联。
测量信号,米
,为原始信息信号的和,x
,和干扰,
.然而,
是未知的。唯一可用的信号是噪声信号,
,和被测信号米
.
M = x + n2;Subplot (1,1,1) plot(time, m) title(被测信号的)包含(“时间”) ylabel (“米”)
你可以恢复原始信息信号,x
,通过ANFIS训练使用自适应噪声消除。
建立ANFIS模型
使用简称anfis
命令来识别之间的非线性关系
而且
.而
不是直接可用的,你能假设吗米
是嘈杂版的吗
进行训练。这个假设x
作为这种非线性拟合中的“噪声”。
假设非线性信道的阶数已知(在这种情况下,2
).您可以使用双输入ANFIS模型进行训练。
定义训练数据。的前两列数据
为ANFIS模型的输入,
还有延期版的
.的最后一列数据
是测量信号,米
.
Delayed_n1 = [0;n1(1:长度(n1) 1)];Data = [delayed_n1 n1 m];
生成初始的FIS对象。默认情况下,网格划分算法对每个输入变量使用两个隶属度函数,从而产生四个用于学习的模糊规则。
genOpt = genfisOptions(“GridPartition”);不定式= genfis(数据(:,1:end-1),数据(:,结束),genOpt);
方法调优FIS简称anfis
初始训练步长为的命令0.2
.
trainOpt = anfisOptions(“InitialFIS”不定式,“InitialStepSize”, 0.2);outFIS = anfis(数据,trainOpt);
ANFIS信息:节点数量:21线性参数数量:12非线性参数数量:12总参数数量:24训练数据对数量:601检查数据对数量:0模糊规则数量:4开始训练ANFIS…1 0.761817 2 0.748426 3 0.739315 4 0.733993在epoch 5之后步长增加到0.22 20000。5 0.729492 6 0.725382 7 0.7721269 8 0.717621在epoch 9之后步长增加到0.242000。9 0.714474 10 0.71207已达到指定的epoch号。ANFIS训练在第10纪元完成。最小训练RMSE = 0.71207
调谐后的FIS,人物》
之间的二阶关系
而且
.
评估模型
计算估计的干扰信号,estimated_n2
,通过使用原始训练数据评估调优后的FIS。
estimated_n2 = evalfis(outFIS,data(:,1:2));
画出实际的 信号和来自ANFIS输出的估计版本。
Subplot (2,1,1) plot(time, n2)“甲烷”)包含(“时间”)标题(“未知干扰信号”) subplot(2,1,2) plot(time, estimated_n2) ylabel(“甲烷”)包含(“时间”)标题(“估计干扰信号”)
估计的信息信号等于测量信号,米
,以及估计的干扰(ANFIS输出)。
Estimated_x = m - estimated_n2;
比较原始信息信号,x
,估计,estimated_x
.
图绘制(时间、estimated_x“b”、时间、x,“r”)包含(“时间”) ylabel (“x”)标题(“实际信号与估计信号的比较”)传说(“估计x”,'实际x(未知)',“位置”,“东南”)
在没有大量训练的情况下,ANFIS模型对信息信号产生了相对准确的估计。