2

我有一个matlab图。类似轨迹的东西。我想在图形中添加噪音。我尝试添加正态分布噪声。使用兰特。例如

x1=x+a*rand(size(x));

对 y 也是如此。

结果附在下面。这不是我想要的。这给了我一个散点图或完全嘈杂的图。如下图所示。第一行是我做的,第三行是我想要的。

在此处输入图像描述

不同的图表列代表不同的标准差(a 的值)。

Q. 如何获得第三类(行)情节?

PS第一行是当我使用 plot(...,".",markersize,1); 第二行是简单的矢量图。

4

1 回答 1

4

问题是您希望噪声具有某种特征。您沿着曲线有许多样本,并且您希望它保持“连接”。您想要相当平滑的结果,并且希望曲线保持闭合。因此,按顺序:随机游走噪声将使点保持连接。低通滤波噪声将保持曲线平滑。并将噪声端点固定为零(平滑)以确保闭合结果。这里有一些代码可以生成 16 种不同类型的噪声 (4x4),改变整体规模和过滤总量。您必须根据数据的“采样率”和形状的整体比例来调整这两个选择。

% Generate sample data
[x,y] = pol2cart(0:0.01:2*pi, 1);

% Pick a set of 4 noise scale, and noise filter values
scales = [.01 .05 .1 .5];
filterstrength = [.1 .5 .9 .98];

% Plot a 4x4 grid, picking a different type of noise for each one
for i=1:4
    for j=1:4
        scale = scales(i);
        f = filterstrength(j);

        % Generate noise for x and y, by filtering a std 1 gaussian random
        % walk
        nx = filter(scale*(1-f), [1 -f], cumsum(randn(size(x))));
        ny = filter(scale*(1-f), [1 -f], cumsum(randn(size(y))));

        % We want a closed polygon, so "detrend" the result so that
        % the last point is the same as the first point
        nx = nx - linspace(0,1,length(nx)).*(nx(end)-nx(1));
        ny = ny - linspace(0,1,length(ny)).*(ny(end)-ny(1));

        subplot(4,4,4*(i-1)+j);

        % Add the noise
        plot(x+nx,y+ny);
    end
end

其他你可以改变的事情:你有几乎无限的过滤器形状选择,这将影响变形的风格。

于 2013-07-25T14:02:24.750 回答