自适应噪声消除使用ANFIS

此示例示出了如何使用做自适应非线性噪声消除ANFISgenfis命令。

信号和噪声

定义一个假设的信息信号,X,在100Hz 6秒取样。

时间=(0:0.01:6)';X = SIN(40 ./(时间+ 0.01));图(时间,x)的标题('信息信号x''字体大小',10)xlabel('时间''字体大小',10)ylabel('X''字体大小',10)

假使,假设X而不干扰信号不能被测量, ñ 2 ,这是从另一个噪声源产生的, ñ 1 经由某些未知的非线性过程。

下图显示了噪声源 ñ 1

N1 = randn(大小(时间));图(时间,N1)称号(“噪声源N_1”'字体大小',10)xlabel('时间''字体大小',10)ylabel('N_1''字体大小',10)

假设干扰信号, ñ 2 ,出现在测量信号中的是通过未知的非线性方程生成的:

ñ 2 ķ = 4 ñ 1 ķ ñ 1 ķ - 1 1 + ñ 1 ķ - 1 2

绘制这个非线性特性作为表面。

域= linspace(分钟(N1),最大值(N1),20);[XX,YY] = meshgrid(域,结构域);ZZ = 4 * SIN(XX)* yy./(1+yy.^2)。冲浪(XX,YY,ZZ);xlabel('N_1(K)''字体大小',10);ylabel('N_1(K-1)''字体大小',10);zlabel('N_2(K)''字体大小',10);标题(“未知干扰信道特征”'字体大小',10);

计算出干扰信号, ñ 2 ,从噪声源, ñ 1 ,并绘制两个信号。

n1d0=n1;%N1与延迟0n1d1 = [0;n1d0(1:长度(n1d0)-1)]。%N1与延迟1n2=4*sin(n1d0)。*n1d1./(1+n1d1.^2);%干扰副区(2,1,1)图(时间,N1);ylabel(“噪音N_1”'字体大小',10);副区(2,1,2)图(时间,N2);ylabel(“干扰N_2”'字体大小',10);

ñ 2 ñ 1 通过前面显示的高度非线性的过程;从图中,这是很难看这两个信号都以任何方式相关。

所测量的信号,,是原始信息信号的总和,X和干扰, ñ 2 。但是,我们不知道 ñ 2 。提供给我们的唯一信号是噪声信号, ñ 1 和所测量的信号

米= X + N 2;%测得的信号副区(1,1,1)情节(时间,米)标题(“测得的信号”'字体大小',10)xlabel('时间''字体大小',10)ylabel(“我”'字体大小',10)

你可以恢复原始信息信号,X经由ANFIS训练使用自适应噪声消除。

构建ANFIS模型

使用ANFIS命令识别 ñ 1 ñ 2 。而 ñ 2 不是直接可用的,您可以假设是“被污染”的版本 ñ 2 为了训练。这种假设对待X在这种非线性拟合的“噪音”。

假定非线性信道是已知的顺序(在此情况下,2),所以你可以使用一个2输入ANFIS模型进行训练。

定义训练数据。的前两列数据是输入到ANFIS模型, ñ 1 和延迟版本 ñ 1 。的最后一列数据是被测信号,

延迟_n1=[0;n1(1:长度(n1)-1];数据=[延迟_n1 n1 m];

生成初始FIS对象。默认情况下,格子分割算法使用两个隶属函数为每个输入变量,从而产生4条模糊规则学习。

genOpt = genfisOptions('网格分区');inFIS = genfis(数据(:,1:端-1),数据(:,端),genOpt);

调整使用的FISANFIS用的初始训练步骤大小命令0.2分

trainOpt=anfioptions('InitialFIS',inFIS,'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 5 0.729492步长在第5纪元后增加到0.220000。公元9世纪以后,台阶尺寸由6 0.725382 7 0.721269 8 0.717621 9 0.714474增加到0.242000。10 0.71207达到指定历元数-->在历元10完成ANFIS训练。最低培训RMSE=0.712070

调谐的FIS,出水口,为之间的二阶关系建模 ñ 1 ñ 2

评价模型

计算估计的干扰信号,estimated_n2中,通过使用原始训练数据评估所述调谐FIS。

估计_n2=蒸发量(出水口,数据(:,1:2));

绘制和实际 ñ 2 信号和来自所述输出ANFIS估计版本。

子批次(2,1,1)图(时间,n2)ylabel('n_2(未知)');副区(2,1,2)图(时间,estimated_n2)ylabel(“估计N_2”);

估计的信息信号等于测量信号之间的差,和估计的干扰(ANFIS输出)。

estimated_x = M  -  estimated_n2;

比较原始信息信号,X和估计,estimated_x

图图(时间,estimated_x,'B',时间,X,'R')图例(“预测X”'实际X(未知)''位置''东南'

在不经过大量训练的情况下,ANFIS能很好地估计出信息信号。

也可以看看

||

相关主题