сглаживающая кривая в массиве в c # .net - PullRequest
1 голос
/ 30 июля 2011

У меня есть массив int, и я отображаю эти значения на графике. (используя zedgraphcontrol)

В этой кривой я хочу найти локальные максимумы, используя C # .net Моя идея сглаживать кривую, чтобы удалить шумы. Как я могу найти эти места.

большое спасибо за все ваши ответы

Ответы [ 2 ]

3 голосов
/ 01 августа 2011

Я не буду пытаться обратиться к точкам адреса Алексея в своем ответе, однако покажу простой пример того, как сгладить кривую в ZedGraph:

GraphPane myPane = zedGraphControl1.GraphPane;

LineItem myLine = myPane.CurveList.AddCurve("Data", myPointPairList, Color.Blue);

myLine.Line.IsSmooth = true;
myLine.Line.SmoothTension = 0.1F;

Значения от 0,0F до 1,0F влияют на величину сглаживания,> 1,0F, вероятно, нежелательно.

Исходный код документации для сглаживания: http://zedgraph.sourceforge.net/documentation/html/P_ZedGraph_Line_IsSmooth.htm

Zedgraph Рекомендации:

1 голос
/ 30 июля 2011

Ответ зависит от контекста.Если вам нужно только найти локальный максимум, то вы можете просто указать интервал (подмассив) и выполнить простую итерацию Math.Max().Это, однако, может быть не тем, что вы хотите.

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

Выможно начать с некоторой исследовательской статистики по сигналу, чтобы помочь вам понять, какую технику вы можете применить.Такие инструменты доступны в пакетах статистики (например, SPSS, Minitab) и Matlab.Посмотрите на графики сигналов, попробуйте подгонку кривой и, возможно, сначала линейную регрессию.Оттуда вы можете увидеть, куда идти.

...