功能: 多维数据进行平滑降噪

格式:
DataSmooth(f, x, r, w, n)
DataSmooth(f, x, r, w)
DataSmooth(f, x, r)
DataSmooth(f, x)
DataSmooth(f)

f : 矩阵变量, 每一行对应一个多维数据点, 然后按行依次代表连续的数据点
x : 矩阵变量, 其每一行对应f每一行, 且此参数列数为1, 其表示对应点在一维方向的位置, 如果此参数为0, 则认为f连续,自动生成数据进行处理
r : 数值, 代表平滑半径, 可根据不同点的距离进行设置, 此参数默认程序自动设置
w : 数值, 代表平滑权重, 此参数越大, 越靠近点的权重越大, 参数默认为2
n : 数值, 代表平滑次数, 默认为1

说明:
1. 函数执行完毕, 返回和f同纬度的平滑数据
2. 如果设置x数据, 这时x必须是列数为1的矩阵, 且其行数与f一致, 这时x表示对应点的位置
3. 如果不设置x数据, 程序认为f为多维空间离散的一些连续点, 这时程序内部按轨迹顺序生成x变量
4. 使用本函数可以对平面曲线, 空间曲线等进行平滑操作

例子:

x = 0:0.1:10;
x = x';
y = x * {Sin<矩阵运算\Sin>}(x) - 4 * {Cos<矩阵运算\Cos>}({Sqrt<矩阵运算\Sqrt>}(x)+ 1.2);
fx = {DataAddNoise<矩阵运算\DataAddNoise>}(x, 0.05);
fy = {DataAddNoise<矩阵运算\DataAddNoise>}(y, 1.2);

//这里假如我们事先有带噪声的fx,fy平面曲线数据, 下面对其进行平滑操作
f = [fx, fy];
s = DataSmooth(f);
sx = s(,1);
sy = s(,2);

{Plot<矩阵运算\Plot>}(x, y, fx, fy, sx, sy);//绘制原始数据, 噪声数据, 平滑数据曲线