что лучше: повышающая или понижающая выборка?

13

Я хочу сравнить два сигнала или кривые. кривая, выбранная при 30 Гц выборка кривой при 2000 Гц

К сожалению, у них разные частоты дискретизации. Первый дискретизируется при 30 Гц, второй при 2000 Гц. Matlab имеет функцию «resample», и я подумал, что это значительно упростит сравнение.

Мой вопрос: разумнее уменьшить вторую кривую или первую?

Изменить: я сделал, как мне сказали. На картинке слева - оригинальные кривые. Кривые справа пересчитаны. В правом верхнем углу повышен, в нижнем правом нижнем.

Я знаю, что кривые имеют разную длину при пересчете. Однако второй сигнал будет обрезан до длины первого сигнала. сравнение

NelsonOrange
источник
1
Я проголосовал за твой вопрос. Как вы думаете, что мудрее.
если очень высокая точность не имеет значения (в данном случае я думаю, что это не имеет значения), то вы можете
уменьшить
@ Stanley Pawlukiewicz, очевидно, я теряю все маленькие пики из-за понижающей дискретизации. Таким образом, повышение частоты дискретизации может быть способом пойти. Опять же, мне не нужны маленькие пики. Я даже думал о сглаживании второго сигнала. Так что в моем случае, возможно, не имеет значения, буду ли я пробовать вверх или вниз.
NelsonOrange
Нужны еще отзывы и ответы?
Лоран Дюваль

Ответы:

18

Короче говоря:

  • Повышение частоты дискретизации : не теряет / не теряет ли информацию (если сделано разумно), тогда безопаснее ,
  • Понижение частоты дискретизации : может привести к потере информации (если сделано неразумно), но в то же время более эффективной в вычислительном отношении .

Таким образом , если сравнивать данные с различной скоростью, и в фазе оценки , когда один пытается определить , как сравнение должно быть сделано (какие функции сравниваются с тем, что метрика, с которой внешние, как точность, эффективно, надежность и т.д.), очень простой первый подход заключается в повышении частоты обоих сигналов с помощью целочисленного коэффициента для согласования их выборки . Здесь это вполне нормально, 6000 Гц может работать на обоих.

Причины могут быть для практики DSP:

  • с целочисленной повышающей дискретизацией вы не обязаны использовать сложные методы фильтрации, а простая линейная интерполяция проста. Помните, однако, что повышение частоты дискретизации добавляет некоторую информацию.
  • с сигналами одинакового масштаба вы можете извлекать элементы и сравнивать их: шум, изменчивость, уклоны, производные и т. д. Вы можете применить правильную коррекцию масштаба / смещения (они не имеют одинаковую амплитуду), использовать линейную или не линейные преобразования (Фурье и т. д.) для проверки наличия признаков сходства в разных областях
  • на этом этапе вы должны быть в состоянии качественно и количественно оценить функции / метрики, необходимые для построения вашего алгоритма. И вы можете оценить, что вы можете потерять из обеих данных. Например, вы можете создать свой алгоритм и посмотреть, насколько он надежен для сигнализации понижающей дискретизации и как далеко вы можете зайти. Здесь ваш алгоритм начинает быть более эффективным.

После того, как вы потратили на это некоторое время, вы будете более готовы начать все заново и решить, следует ли сокращать выборку или нет, каким способом и т. Д. Достичь безопасности и эффективности .

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

Лоран Дюваль
источник
14
Даунсэмплинг почти всегда теряет информацию, даже если это не сделано неразумным способом. Однако потеря информации может быть мудрой вещью, так что ...
leftaroundabout
@leftaroundabout В каких крайних случаях понижающая выборка может не потерять информацию?
Виллем
2
@ leftaroundabout Я не согласен. Потеря информации всегда хуже, чем ее сохранение. Единственно разумно знать, какую информацию выбросить для лучшего представления сигнала, а не саму потерю информации.
AlexTP
5
@ Виллем: Как чрезвычайно очевидный случай, сигнал постоянного тока может быть понижен до одной выборки. В общем, любой сигнал, у которого нет компонентов выше (нового) предела Найквиста, может быть безопасно понижен.
MSalters
1
Можно утверждать, что никакая информация не теряется из сигнала постоянного тока в сигнал 1 выборки, поскольку вы можете преобразовать обратно в сигнал, идентичный исходному сигналу из 1 выборки. Можно утверждать, что информация теряется, потому что, если вы даете человеку 1 образец сигнала без дополнительной информации и спрашиваете «Представляет ли это сигнал постоянного тока?» ответ будет «Не знаю, недостаточно информации с одного образца».
SE нарушает авторские права
7

Если вы используете такую ​​функцию, как plot (x, y), самый простой способ отобразить их на одном графике - просто вообще не повторять сэмплирование ни одной из них, а просто заполнить каждый вектор x соответствующими значениями для каждого сигнала, поэтому оба появляются там, где Вы хотите на дисплее.

Вы также можете настроить график, чтобы иметь две разные оси X (по одной для каждой кривой) с разными надписями и легендами, если хотите.

Теперь о пересчете. Я буду использовать Fs для частоты дискретизации.

Выбранный сигнал не может содержать частотные составляющие выше Fs / 2.Это ограничено.

Кроме того, сигнал, который содержит только частотные составляющие вплоть до частоты F, может быть точно представлен с частотой дискретизации 2F.

Обратите внимание, что это «точное» представление является математическим, а не визуальным. Для хорошего визуального представления наличие 5-10 выборок за период (таким образом, отсутствие заметных частотных компонентов выше Fs / 10 или около того) действительно помогает мозгу соединить точки. Посмотрите на этот рисунок: тот же сигнал, нижняя кривая имеет более низкую частоту дискретизации, нет потери информации, потому что частота ниже, чем Fs / 2, но все равно выглядит как дерьмо.

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

Это точно такой же сигнал, хотя. Если вы отберите (реконструируете) нижний с помощью фильтра sinc, вы получите верхний.

децимация (понижающая дискретизация) сворачивает все частотные составляющие выше, чем новый Fs / 2, в сигнал. Вот почему мы обычно ставим крутой фильтр нижних частот перед прореживателем. Например, чтобы уменьшить частоту с Fs = 2000 Гц до Fs = 30 Гц, сначала мы должны применить низкочастотный диапазон высокого порядка с отсечкой чуть ниже 15 Гц, а затем только десятичный.

Однако этот фильтр будет представлять проблемы с переходными процессами, у него будет запаздывание фазы на определенных частотах, и он может изменить визуальный аспект вашего сигнала, что вы не хотите делать, если идея состоит в том, чтобы визуально сравнить их. Приведенное выше правило применяется, не уменьшайте слишком сильно, всегда сохраняйте F в 5-10 раз наивысшей частотой, если вы хотите, чтобы форма сигнала что-то значила. Вот почему 200 МГц необходимо производить выборку с частотой 1-2 Гбит / с.

Мой вопрос: разумнее уменьшить вторую кривую или первую?

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

В некоторых случаях потребуется преобразование частоты выборки. Например, чтобы уменьшить количество точек, уменьшить использование памяти, сделать это быстрее ... или заставить оба сигнала использовать одни и те же координаты «х» для выполнения расчетов по ним.

В этом случае вы также можете использовать промежуточный Fs, уменьшить частоту сигнала с высоким F и увеличить частоту сигнала с низким F. Или просто уменьшите выборку с высоким Fs.

Придерживайтесь критериев Найквиста и не выбирайте слишком низкую частоту дискретизации, иначе вы потеряете точность формы сигнала при высоком сигнале Fs, вы получите сдвиги фаз из-за фильтра нижних частот и т. Д. Или если вы знаете высокочастотное содержимое незначительно, вы можете сделать осознанный выбор. я

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

И ... обратите внимание, что передискретизация / повышающая дискретизация также будут мешать с переходной реакцией, по крайней мере, визуально. Например, если вы перепишете шаг, вы получите много сигналов из-за импульсного отклика фильтра sinc. Это потому, что вы получаете сигнал с ограниченной полосой пропускания, и хороший шаг с квадратными углами фактически имеет бесконечную полосу пропускания.

Я возьму в качестве примера прямоугольную волну. Подумайте об исходном дискретизированном сигнале: 0 0 0 1 1 1 0 0 0 1 1 1 ... Ваш мозг видит прямоугольную волну.

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

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

Это просто визуальное представление прямоугольной волны с ограниченной полосой. Отвороты вроде бы существуют ... а может и нет. Нет никакого способа узнать, были ли они там в исходном сигнале или нет. В этом случае решение состояло бы в том, чтобы получить исходную прямоугольную волну с более высокой частотой дискретизации, чтобы получить лучшее разрешение на границе, в идеале вам нужно несколько образцов на краю, чтобы они больше не выглядели как шаг бесконечной полосы пропускания. Тогда при передискретизации такого сигнала результат не будет иметь визуальных артефактов.

Тем не мение. Как вы можете видеть ... просто возиться с осями X. Это намного проще.

peufeu
источник
4

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

Какой из них вы должны использовать? Это зависит от того уровня уверенности, который вам нужен.

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

Если вам нужно ограничить точность ваших вычислений: это возможно, но я не могу вам с этим помочь.

Willem
источник
+1, потому что вам удалось сжать несколько важных частей информации в очень кратком ответе.
dsp_user
3

Это зависит от того, что вы подразумеваете под «сравнить» и «мудрее». Мудрая вещь, которая не трудна в Matlab, состоит в том, чтобы сделать это обоими способами и решить для себя.

На самом деле, если бы вы исправили свой вопрос с результатами обоих подходов, я бы поставил ваш вопрос на голосование, и больше людей сочли бы его интересным и, скорее всего, помогли бы выяснить «сравнить»


источник
1

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

https://medium.com/@davidpinyol91/edge-effects-when-resampling-a-signal-on-matlab-how-to-solve-it-cc6458ab1306

Dacapi
источник