2013-07-25 35 views
1

我有一个图形图像。就像一个轨迹。我想给图表添加噪音。 我尝试添加正常分布噪声。使用兰德。例如如何合适的噪声添加到图

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

对于y也是类似的。

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

enter image description here

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

问:如何获取地块的第三类(行)?

P.S.第一行是当我使用情节(...,“。”,markersize,1);第二行为简单的矢量图。

+1

它是一个轮廓?什么是x?什么是y?图表在哪里?哪些节点? – Eleanore

+0

@Eleanore是的。坐标。坐标。图形有多种定义。[http://en.wikipedia.org/wiki/Graph_of_a_function]不只是带有节点和边的图形。但是,确切地说,它不是一个函数图。假设这是一个粒子的轨迹。 – user2178841

+0

这很明显。但是,您没有指定x和y。这些是构成轮廓点的坐标吗?我是否应该假设情节中的所有点都以坐标(你想重新计算)为特征?而且,你没有指定什么是“噪音”。它只是轮廓的变形吗? – Eleanore

回答

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 

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

+0

我正在寻找完美的答案。 – user2178841