主要内容

基于ANFIS的自适应噪声消除

这个例子展示了如何通过构造和调整ANFIS模型来进行自适应非线性噪声消除。

信号与噪音

定义一个假设的信息信号,x,在6秒内以100赫兹采样。

时间= (0:0.01:6)';X = sin(40./(时间+0.01));情节(时间,x)标题(“信息信号x”)包含(“时间”) ylabel (“x”

图中包含一个轴对象。标题为Information Signal x的axes对象包含一个line类型的对象。

假设x没有干扰信号无法测量, n 2 ,是由另一个噪声源发出的, n 1 ,通过某种未知的非线性过程。

生成并绘制噪声源 n 1

N1 = randn(size(time));情节(时间、n1)标题(“噪声源n_1”)包含(“时间”) ylabel (“n_1”

图中包含一个轴对象。标题为空白索引为1基线的坐标轴对象包含一个类型为line的对象。

假设干扰信号, n 2 ,是由一个未知的非线性方程产生的:

n 2 k 4 n 1 k n 1 k - 1 1 + n 1 k - 1 2

把这个非线性函数画成曲面。

域= 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)的)标题(“未知干扰信道特征”

图中包含一个轴对象。标题为“未知干扰通道特征”的轴对象包含一个类型为surface的对象。

计算干扰信号, n 2 ,来自噪声源, n 1 ,并绘制两个信号。

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)“甲烷”)标题(干扰信号的)包含(“时间”

图中包含2个轴对象。标题为噪声源的坐标轴对象1包含一个类型为line的对象。标题为干涉信号的坐标轴对象2包含一个类型为line的对象。

n 2 n 1 通过前面提到的高度非线性过程。然而,从图中可以看出,这两个信号并没有以任何方式相互关联。

测量信号,,为原始信息信号的和,x,和干扰, n 2 .然而, n 2 是未知的。唯一可用的信号是噪声信号, n 1 ,和被测信号

M = x + n2;Subplot (1,1,1) plot(time, m) title(被测信号的)包含(“时间”) ylabel (“米”

图中包含一个轴对象。标题为Measured Signal的axis对象包含一个类型为line的对象。

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

建立ANFIS模型

使用简称anfis命令来识别之间的非线性关系 n 1 而且 n 2 .而 n 2 不是直接可用的,你能假设吗是嘈杂版的吗 n 2 进行训练。这个假设x作为这种非线性拟合中的“噪声”。

假设非线性信道的阶数已知(在这种情况下,2).您可以使用双输入ANFIS模型进行训练。

定义训练数据。的前两列数据为ANFIS模型的输入, n 1 还有延期版的 n 1 .的最后一列数据是测量信号,

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,人物》之间的二阶关系 n 1 而且 n 2

评估模型

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

estimated_n2 = evalfis(outFIS,data(:,1:2));

画出实际的 n 2 信号和来自ANFIS输出的估计版本。

Subplot (2,1,1) plot(time, n2)“甲烷”)包含(“时间”)标题(“未知干扰信号”) subplot(2,1,2) plot(time, estimated_n2) ylabel(“甲烷”)包含(“时间”)标题(“估计干扰信号”

图中包含2个轴对象。标题为“未知干扰信号”的坐标轴对象1包含类型为line的对象。标题为“估计干扰信号”的Axes对象2包含一个类型为line的对象。

估计的信息信号等于测量信号,,以及估计的干扰(ANFIS输出)。

Estimated_x = m - estimated_n2;

比较原始信息信号,x,估计,estimated_x

图绘制(时间、estimated_x“b”、时间、x,“r”)包含(“时间”) ylabel (“x”)标题(“实际信号与估计信号的比较”)传说(“估计x”'实际x(未知)'“位置”“东南”

图中包含一个轴对象。标题为Comparison of Actual and Estimated Signals的axes对象包含2个类型为line的对象。这些对象表示估计x,实际x(未知)。

在没有大量训练的情况下,ANFIS模型对信息信号产生了相对准确的估计。

另请参阅

||

相关的话题