|
Не получается цифровой LPF, (в Matlab) |
|
|
|
Feb 19 2018, 08:10
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 31-10-17
Пользователь №: 99 993

|
Есть входной сигнал 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]; } } Перевёл код в Матлаб  Но результат не понятен (верх - исходный,низ - результат):  Почему не получилась синусоида? Я не правильно применил фильтр? Я ошибся в коде Матлаба?
Сообщение отредактировал RG29 - Feb 19 2018, 08:11
|
|
|
|
|
 |
Ответов
|
Feb 19 2018, 09:31
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 31-10-17
Пользователь №: 99 993

|
Попробовал построить спектр сигнала:  Получается, при такой частоте семплирования в цифровых данных сигнале не достаточно информации о высших гармониках, и поэтому, как написал Lmx2315, оцифрованный сигнал как бы повреждён и не может быть восстановлен до исходной синусоиды. Верно?
|
|
|
|
|
Feb 19 2018, 09:52
|
Местный
  
Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163

|
Цитата(RG29 @ Feb 19 2018, 12:31)  Получается, при такой частоте семплирования в цифровых данных сигнале не достаточно информации о высших гармониках, и поэтому, как написал Lmx2315, оцифрованный сигнал как бы повреждён и не может быть восстановлен до исходной синусоиды. Верно? Спектр треугольника содержит нечетные гармоники фундаментальной частоты (в Вашем случае еще и постоянку), амплитуда которых убывает как квадрат их номера. Для того, чтобы синтезировать более-менее нормальны треугольник нужно взять хотя бы 5 гармоник (см https://en.wikipedia.org/wiki/Triangle_wave). Это даст полосу сигнала равную 10*(1/Период). Соответственно, для дискретизации такого сигнала требуется примерно 20-ти кратная частота дискретизации.
|
|
|
|
|
Feb 19 2018, 10:09
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 31-10-17
Пользователь №: 99 993

|
Цитата(andyp @ Feb 19 2018, 12:52)  Спектр треугольника содержит нечетные гармоники фундаментальной частоты (в Вашем случае еще и постоянку), амплитуда которых убывает как квадрат их номера. Для того, чтобы синтезировать более-менее нормальны треугольник нужно взять хотя бы 5 гармоник (см https://en.wikipedia.org/wiki/Triangle_wave). Это даст полосу сигнала равную 10*(1/Период). Соответственно, для дискретизации такого сигнала требуется примерно 20-ти кратная частота дискретизации. Чисто из интереса, то есть, если я руками допишу по 20 промежуточных точек в исходные данные и в расчёт фильтра поставлю новую частоту 220500, то фильтр отработает как надо и на выходе получится синусоида?  Цитата(Realking @ Feb 19 2018, 13:00)  Цель то всего этого? не понятно..
Или показать кому то наглядно надо? ))
и еще.. как уже было сказано выше, это не искажения... Цель проста - постижение науки ЦОС
|
|
|
|
|
Feb 19 2018, 10:10
|
Местный
  
Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771

|
Цитата(RG29 @ Feb 19 2018, 13:05)  Чисто из интереса, то есть, если я руками допишу по 20 промежуточных точек в исходные данные и в расчёт фильтра поставлю новую частоту 220500, то фильтр отработает как надо и на выходе получится синусоида?  ))) да не треугольник у Вас но если допишите, то да - треугольник но и фильтровать (гасить) вы должны от 10 кГц и выше
--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
|
|
|
|
Сообщений в этой теме
RG29 Не получается цифровой LPF Feb 19 2018, 08:10 Tpeck Цитата(RG29 @ Feb 19 2018, 11:10) Есть вх... Feb 19 2018, 08:17 RG29 Я так предполагал, что мой фильтр срежет все высок... Feb 19 2018, 08:40 Lmx2315 . Feb 19 2018, 08:54 RG29 Не пойму за отсчёты. Исходный сигнал получен с АЦП... Feb 19 2018, 08:58 Lmx2315 Цитата(RG29 @ Feb 19 2018, 11:58) Не пойм... Feb 19 2018, 09:08 Tpeck Цитата(RG29 @ Feb 19 2018, 11:58) Не пойм... Feb 19 2018, 09:23  Lmx2315 Автор нарисовал треугольник из входных отчётов , а... Feb 19 2018, 09:34 RG29 Само собой, фильтр есть.
Почему испорчен, частота ... Feb 19 2018, 09:12 ViKo А цифры 0, 2, 4, 6 ... по X на графиках - это что?... Feb 19 2018, 09:17   Realking Цитата(RG29 @ Feb 19 2018, 13:09) Чисто и... Feb 19 2018, 10:18 ViKo На 15 кГц третья гармоника покажется, если расшири... Feb 19 2018, 09:43 RG29 Вот теперь (кажется) понял, спасибо
Тогда такой в... Feb 19 2018, 09:53 Realking Цитата(RG29 @ Feb 19 2018, 12:53) Вот теп... Feb 19 2018, 10:00 andyp Цитата(RG29 @ Feb 19 2018, 12:53) Тогда т... Feb 19 2018, 10:15 RG29 Сделал как описано выше. Всё работает, как и должн... Feb 19 2018, 10:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|