RG29 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 (изменено) · Жалоба Есть входной сигнал 5кГц напоминающий треугольник Хотелось бы из него сделать что-то близкое к синусоиде. Для этого пропускаю его через фильтр НЧ. Код фильтра был сгенерирован калькулятором ЗДЕСЬ для параметров: -тип - Баттерворт -порядок - 4 -сэмплинг - 11025 -частота среза - 5500 #define NZEROS 4 #define NPOLES 4 #define GAIN 1.009351158e+00 static float xv[NZEROS+1], yv[NPOLES+1]; static void filterloop() { for (;;) { xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = next input value / GAIN; yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = (xv[0] + xv[4]) + 4 * (xv[1] + xv[3]) + 6 * xv[2] + ( -0.9815567827 * yv[0]) + ( -3.9444991525 * yv[1]) + ( -5.9443270236 * yv[2]) + ( -3.9813846512 * yv[3]); next output value = yv[4]; } } Перевёл код в Матлаб Но результат не понятен (верх - исходный,низ - результат): Почему не получилась синусоида? Я не правильно применил фильтр? Я ошибся в коде Матлаба? Изменено 19 февраля, 2018 пользователем RG29 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Есть входной сигнал 5кГц напоминающий треугольник Ключевое слово - напоминающий треугольник. Теорема Котельникова Вам знакома? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RG29 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Я так предполагал, что мой фильтр срежет все высокочастотные составляющие и сигнал сгладится, станет более похож на синус, но сглаживания нет. Вы намекаете, что мой исходный сигнал не содержит гармоник выше 5500Гц, поэтому фильтр не работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RG29 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Не пойму за отсчёты. Исходный сигнал получен с АЦП оцифровкой сигнала 5000 Гц с частотой семплирования 11025 Гц. Где не соответствие Котельникову? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Не пойму за отсчёты. Исходный сигнал получен с АЦП оцифровкой сигнала 5000 Гц с частотой семплирования 11025 Гц. Где не соответствие Котельникову? У вас на входе АЦП нет аналогового фильтра который пропускает только сигналы с частотой до 5 Кгц ? Если нет - то вы наблюдаете Альясинг , ваш сигнал испорчен и востановлению не подлежит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RG29 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Само собой, фильтр есть. Почему испорчен, частота 5КГц, сэмплинг 11КГц, разве не нормальный вид для такого количества выборок? Почему не подлежит, почему ФНЧ не сможет сгладить гармоники выше 5КГц? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба А цифры 0, 2, 4, 6 ... по X на графиках - это что? С Котельниковым у вас все нормально. Или нет? Нужно же весь спектр сигнала пропустить. Да, вы передаете гармоники сигнала из других зон периодического цифрового фильтра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tpeck 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Не пойму за отсчёты. Исходный сигнал получен с АЦП оцифровкой сигнала 5000 Гц с частотой семплирования 11025 Гц. Где не соответствие Котельникову? И какой сигнал можно оцифровать с такой частотой дискретизации? Когда у вас, чуть более, чем два отсчета на период? Почему не подлежит, почему ФНЧ не сможет сгладить гармоники выше 5КГц? А какие гармоники, по Вашему мнению, там присутствуют? Можете частоты привести? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RG29 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Попробовал построить спектр сигнала: Получается, при такой частоте семплирования в цифровых данных сигнале не достаточно информации о высших гармониках, и поэтому, как написал Lmx2315, оцифрованный сигнал как бы повреждён и не может быть восстановлен до исходной синусоиды. Верно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Автор нарисовал треугольник из входных отчётов , а на самом деле у него синусоида с двумя , с небольшим , отчётами на период . -никакого треугольника там быть не может . По этому и после фильтра у него тоже самое . Линии что он соеденил отчёты - несуществующие , прямо скажем - ошибочные в данном случае абстракции. У треугольного сигнала бесконечный спектр гармоник , а они не могли пролезть через входной фильтр. з.ы. спектр как мы видим правильный - постоянная составляющая и маленькая синусоидальная гармоника на 5 кгц , а не треугольник. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба На 15 кГц третья гармоника покажется, если расширить график спектра. И т.д. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andyp 9 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Получается, при такой частоте семплирования в цифровых данных сигнале не достаточно информации о высших гармониках, и поэтому, как написал Lmx2315, оцифрованный сигнал как бы повреждён и не может быть восстановлен до исходной синусоиды. Верно? Спектр треугольника содержит нечетные гармоники фундаментальной частоты (в Вашем случае еще и постоянку), амплитуда которых убывает как квадрат их номера. Для того, чтобы синтезировать более-менее нормальны треугольник нужно взять хотя бы 5 гармоник (см https://en.wikipedia.org/wiki/Triangle_wave). Это даст полосу сигнала равную 10*(1/Период). Соответственно, для дискретизации такого сигнала требуется примерно 20-ти кратная частота дискретизации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RG29 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 (изменено) · Жалоба Вот теперь (кажется) понял, спасибо :08: Тогда такой вопрос - можно как-то исправить искажения из-за низкой частоты семплирования программно? Изменено 19 февраля, 2018 пользователем RG29 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 19 февраля, 2018 Опубликовано 19 февраля, 2018 · Жалоба Вот теперь (кажется) понял, спасибо :08: Тогда такой вопрос - можно как-то исправить искажения из-за низкой частоты семплирования программно? Цель то всего этого? не понятно.. Или показать кому то наглядно надо? )) и еще.. как уже было сказано выше, это не искажения... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться