Какой хороший способ представить форму волны в определенном диапазоне высоты - PullRequest
0 голосов
/ 01 февраля 2011

Я с удовольствием рисую кривые на экране из данных PCM.У меня есть проблема, когда время от времени высота осциллограммы будет превышать высоту области отображения.

Как я могу гарантировать, что данные построения графика осциллограммы никогда не превысят определенную высоту без необходимости пролистывать весь набор pcmданные и нормализация от максимального найденного значения?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2011

Использование нормализованного представления - это именно то, что вы бы сделали.

Вы могли бы обмануть и предварительно рассчитать максимальные значения для данного диапазона, если это ограничение, предлагаемое реализацией.

0 голосов
/ 01 февраля 2011

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

Если вам известно количество бит в выборках PCM, вы можете предположить, чтомасштабирование будет ограничено [-2^(bits-1), 2^(bits-1)-1].Это будет абсолютный максимум и минимум сигнала.Однако это самое пессимистичное масштабирование - если у вас есть 16-битный сигнал, который никогда не выходит за пределы диапазона [-1024,1024], например, вы отказываетесь от большой области отображения (а также от динамического диапазона АЦП, но этодругая история).

Если вы хотите динамически масштабировать сигнал, вы можете просто увеличивать масштаб графика каждый раз, когда ваш сигнал будет обрезан.Более сложным подходом было бы увеличение масштаба по мере необходимости, но затем постепенное уменьшение максимальной шкалы с течением времени.Хороший способ ослабить максимальную шкалу - это экспоненциальный спад, например, умножить максимальную шкалу на 0,98 (или на другое число <1) на каждой итерации. </p>

...