Как добавить соответствующий шум на график

У меня есть матлаб график. Что-то вроде траектории. Я хочу добавить шум на график. Я попытался добавить шум нормального распределения. используя ранд. например

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

и аналогично для у.

Результаты прикреплены ниже. Это не то, чего я хочу. Это дает мне либо график рассеяния, либо полностью зашумленный график. Как показано ниже. Первый ряд - это то, что я сделал, третий ряд, что я хочу.

введите здесь описание изображения

Разные столбцы графика обозначают разное стандартное отклонение (значение a).

В. Как получить третий тип (строку) графика?

P.S. Первая строка - это когда я использую plot(...,".",markersize,1); и вторая строка для простого векторного графика.


person user2178841    schedule 25.07.2013    source источник
comment
Это контур? Что такое х? Что ты? Где график? Какие узлы?   -  person Eleanore    schedule 25.07.2013
comment
@Элеонора Да. Координат. Координат. Существует несколько определений графа.[en.wikipedia.org/wiki/Graph_of_a_function] не просто граф с узлами и ребрами. Но точно, это и не график функции. Допустим, это траектория частицы.   -  person user2178841    schedule 25.07.2013
comment
Это очевидно. Однако вы не указали, что такое x и y. Это координаты точек, составляющих контур? Должен ли я предположить, что все точки на вашем графике характеризуются координатой (которую вы хотите пересчитать)? Более того, вы не уточнили, что для вас является шумом. Это просто деформация вашего контура?   -  person Eleanore    schedule 25.07.2013
comment
@Eleanore Да, это точки, составляющие контур. Я точно не знаю, что вы имеете в виду, или что еще могут означать данные. Но да. то, что вы получаете, является правильным. У меня есть координата положения частицы (x, y). Я рисую это как (x, y) и хочу их пересчитать. да. и да шум это деформация контура.   -  person user2178841    schedule 25.07.2013
comment
Не нужно расстраиваться :) По сути, я боюсь, что добавление случайного шума просто испортит очки. Я могу предложить вам определить доверительный интервал вокруг точки, так как вы хотите просто немного отойти от исходного положения. Что-то вроде: coord = coord + A*rand(1). A определяется как ваш доверительный интервал: чем выше A, тем выше шум, тем больше деформация. Таким образом вы ограничиваете движение вашей частицы, как будто вы ставите поводок. Это делается для обеих координат, чтобы заставить частицу двигаться по соседству.   -  person Eleanore    schedule 25.07.2013


Ответы (1)


Проблема в том, что вы хотите, чтобы шум имел определенную характеристику. У вас есть много образцов вдоль кривой, и вы хотите, чтобы она оставалась «подключенной». Вам нужны довольно гладкие результаты, и вы хотите, чтобы кривая оставалась замкнутой. Итак, по порядку: шум случайного блуждания будет поддерживать связь точек. Шум, отфильтрованный фильтром нижних частот, сохранит плавность кривой. И зафиксируйте конечную точку шума равной нулю (плавно), чтобы обеспечить закрытый результат. Вот некоторый код, который генерирует 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

Другие вещи, которые вы можете изменить: у вас есть почти бесконечный выбор формы фильтра, который повлияет на стиль деформации.

person Peter    schedule 25.07.2013