На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 46,
участников - 2 [ gladiator, melom]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Радиосигналы —› SDR - алгоритмы, идеи, проблемы, принципы 
Трансиверы Yaesu в нашем магазине


Yaesu FT-817ND
руб.

Yaesu FT-857D
руб.

Yaesu FT-897D
руб.

Yaesu FT-450D
руб.

Yaesu FT-950
руб.
 Страница:  ««  1  2  3  4  5  6  7  8  »»Поиск в теме
Автор Сообщение
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 28 Окт 2011 13:01:03 #  

вот так будет работать?
Что такое 2*pi*f*t?
Получатся две боковые по обе стороны от частоты sin/cos

http://www.dsplib.ru/content/hilbertquad/hilbertquad.html#r0

Увеличить
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 13:09:54 #  

rst59 Ну собсно sea уже ответил. :) Придётся с полосой определится заранее, или только бла-бла с микрофона, или если в планах музЫку или чего пошире, то сразу лучше прикидывать.
Реклама
Google
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 13:14:19 #  

спасибо за ответы
и ещё вопрос
где будет располагаться спектр сверху или снизу? как перекинуть на другую сторону? cos и sin местами поменять?

sea
cos(pi/2*n)
т.е. эта функция принимает только значения -1, 0 и 1?
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 13:20:19 #  

rst59 как перекинуть на другую сторону? cos и sin местами поменять? Да.
т.е. эта функция принимает только значения -1, 0 и 1? Блин наваждение какое-то с частными случаями. :-) В общем случае нет, в каких-то частных да там будут константы, парит чекить те что вы напсали или чего другое, и в каких случаях именно, это имхо несложно прикинуть.
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 28 Окт 2011 13:22:39 · Поправил: sea (28 Окт 2011 13:24:10) #  

То есть мы переносим сигнал на промежуточную частоту, отфильтовываем одну боковую и вроде как переносим обратно в ноли кажный канал (0 и 90 град).

Есть еще похожий вариант. Например при сигнале 3 КГц перемножаем на 1.5 ГКц так, чтобы сигнал был вокруг 0 Гц. И так далее, прямо как по книге ППП, только в цифровом виде.
http://www.microtelecom.it/ssbdex/ssbdex-e.htm

Еще можно попробовать сделать Фазовый фильтр(All pass filter) но мне это показалось сложнее для понимания. Много гуглил по поводу Hilbert filter design нашел немного информации. По русски еще меньше. И как понял КИХ фильтр даст нелинейную АЧХ, а БИХ я чего-то не смог синтезировать.

Вот тут делают, как я понял, на базе цепочки из нескольких БИХ фильтров:

http://www.jurnal.org/articles/2008/izmer10.html

Вот еще несколько файлов полистать
10.1.1.26.1054.pdf
10.1.1.41.5876.pdf
10.1.1.139.1109.pdf
Еще
Че то про SDR
Эхх, устал грузить. Остальное тут http://rghost.ru/27484101

Вот еще ссылки
http://www.dsprelated.com/showmessage/88412/1.php
http://www.katjaas.nl/hilbert/hilbert.html
http://www.student.oulu.fi/~oniemita/dsp/hilbert/

Приятного прочтения! ;)
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 28 Окт 2011 13:25:36 #  

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

А если с микроконтроллера генерить, например CW, BPSK и прочее, на базе несущих, то их сразу же можно генерировать в 0 и 90 и ничего фильтровать не надо.
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 13:26:45 #  

Mesh, sea
спасибо! попробую реализовать
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 13:31:07 · Поправил: Mesh (28 Окт 2011 13:38:39) #  

rst59 Есть еще похожий вариант. Например при сигнале 3 КГц перемножаем на 1.5 ГКц так, чтобы сигнал был вокруг 0 Гц. И так далее, прямо как по книге ППП, только в цифровом виде. Вот если взять дискрет для такого примеру 6000 килогерц это и будет один из частных случаев. Имхо. :) 6000 килогерцев это я конечно маху дал, пардоне.
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 28 Окт 2011 13:42:42 · Поправил: sea (28 Окт 2011 13:43:52) #  

Таки да ) Получается умножение можно заменить за изменение знака, потому, что умножать надо будет один канал на 0, 1, 0, -1, второй, соответственно на 1, 0, -1, 0. Но тут все равно, что использовать ключевой смеситель, т.е. получается перемножение на меандр. В данном случае получается, что после ЦАП с дискретизацией в 6 КГц нужно поствить соотв. ФНЧ в 6 КГц, иначе сигнал много раз повторится по частоте (гармоники). Физика - штука злая. Если же при 48 КГц умножать на меандр 1.5 КГц, то гармоники вылезут уже в цифровом виде. Может я конечно и ошибаюсь, надо глядеть на условия реализации, но мне кажется, что лучше сделать 48 КГц дискретизацию, умножать на нечто похожее на синус с косинусом и тогда хотя бы в цифре гармоник не будет до 24 КГц, дальше на тот же ФНЧ КГц, и он подавит то, что будет выше 24 КГц намного лучше, чем то, что останется выше 6 КГц при дискретизации в 6 КГц. Но надо смотреть вычислительную мощь, применяемые ЦАП/АЦП. Все ИМХО, конечно.
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 13:53:05 #  

sea Гм, как бы оно б мне не очень надо, разберётесь конечно, но вроде как то после ЦАП с дискретизацией в 6 КГц нужно поствить соотв. ФНЧ в 6 КГц, что-то тут не то? :) Что может отфильтровать ФНЧ со срезом 6 килогерц при дискрете 6 килогерц? Как бы особо дискутировать не очень хоца, тема для меня не очень волнующая, но вроде косяк какой в прикидах?
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 28 Окт 2011 14:52:34 · Поправил: sea (28 Окт 2011 15:01:18) #  

Ну может быть... На два поделить... Просто после ЦАП надо ФНЧ. А если ЦАП на 6, а ФНЧ на 3 зачем вообще цифровая обработка? :)

спасибо! попробую реализовать
Интересно на чем

ps. Я в БПФ не специалист, но думаю, что его тоже можно использовать для поворота фазы на 90 градусов. Там же вроде как раз и получаются амплитуды и фазы. Но это я так... Слышал звон.
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 19:13:55 #  

sea А, ЦАП... ну да, чёт не просёк сходу, думал о чём-то о своём. :) Да юзают и БПФ конешно. Тут от платформы зависит изделия ну и цели какие нужно достигнуть.
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 21:27:12 #  

вот заюзал тут фильтр TIirLPF из исходников Eralgen и Mesh
но как-то он не по нужной частоте срезает, а выше процентов на 40-50
кто вкурсе в чём дело?
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 28 Окт 2011 21:37:28 · Поправил: sea (28 Окт 2011 22:44:11) #  

вот заюзал тут фильтр TIirLPF из исходников Eralgen и Mesh
А можно чуть подробнее? Просто вариантов LPF в виде IIR вагон и маленькая тележка.
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 21:42:08 #  
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 21:47:37 #  

собственно хочу сделать конвертер wav в IQ :)
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 22:35:56 #  

rst59 Я так думаю, там просто вы попарились с частотой дискрета судя по тому что 40-50 эт как раз в два раза. Вся софтина и все классы это eralgen, я тока там чуток совего дописал. Дискрет меняется при перегонах туда суда.
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 28 Окт 2011 22:45:54 #  

собственно хочу сделать конвертер wav в IQ :)
Ага, а потом нарежете на болвалку и сделаете безкомпьютерный SDR маяк.
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 22:55:29 · Поправил: rst59 (28 Окт 2011 22:56:17) #  

вот файл до и после фильтра
http://db.tt/JdtjEmNI
http://dl.dropbox.com/u/9597146/bfr.jpg
http://dl.dropbox.com/u/9597146/aft.jpg

фильтр задаю так
TIirLPF.Create(12000, 48000, 0.8, 12, 0.9)
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 22:59:16 #  

нарежете на болвалку и сделаете безкомпьютерный SDR маяк
можно и так :)
но желательно риалтайм обработка
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 23:03:06 #  

rst59 Да я не могу проверить, у меня дельфи давно уже нет. Вот думкаю может скачать да поставить? А другой какой фильтр, там вроде их куча классов была, да и порядок с ходу 12 может не надо, так попробовать-то можно и на меньшем потом увеличить. Блин я уж не помню чего там и как.
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 28 Окт 2011 23:32:17 #  

странно... с другими фильтрами (TIIRFilter, TIIRFilter1) тоже не получилось отсечь частоты выше 12кГц
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 28 Окт 2011 23:52:04 #  

rst59 Сгенерите шум во всей полосе в том ж Куле, тока с амплитудой там не переборщите, прогоните через фильтр и будет видно в реале чего там где, может оно всё и нормал и что б получить то что вы хотите нужно 120 порядку фильтры или ещё круче. Срез вобще вроде по уровню 3 дб задаётся, там ни как не будет что сразу после 12 полный мрак типо всё исчезло.
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 29 Окт 2011 00:02:40 #  

пробовал и больший порядок - бестолку
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 29 Окт 2011 00:09:31 · Поправил: Mesh (29 Окт 2011 00:09:49) #  

rst59 Положите листинг кода где инизилизируете и используете фильтр, так не бывает, где-то в консерватории косяк.
sea
Участник
Offline3.3
с авг 2006
Ярославль
Сообщений: 832

Дата: 29 Окт 2011 09:55:01 #  

Я вот на дельфи делаю белый шум рандомом. Потом фильтр. Потом все это в файл dat. В SV старом открываю и смотрю что получается. Дискретизацию сейчас считаю и ставлю на 48 КГц. Фильтры БИХ. Порядок 6-8. Тогда получается нормально. Если КИХ, то там и 120 выглядят как-то... Фильтры считаю в Filter Solutions там есть сразу же вывод текста в с++, чтобы понять алгоритм хватает.

По поводу подавления заметил такую интересную весчь, что БИХ ФНЧ чем выше частота среза, тем меньше подавление, а ФВЧ практически ничего не меняют (странно). Полосовые работают.
rst59
Участник
Offline1.4
с мая 2009
KN88SU
Сообщений: 127

Дата: 29 Окт 2011 10:04:26 · Поправил: rst59 (29 Окт 2011 10:14:35) #  

sea
можете выложить выши делфяные исходники?

Mesh
function Norm(r: real): SmallInt;
begin
if r > 65535 then r := 65535;
if r < -65536 then r := -65536;
Result := Round(r);
end;

LPF1 := TIirLPF.Create(12000, 48000, 0.8, 12, 0.9);
SetLength(waveout, Length(wavein));
for i := Low(wavein) to High(wavein) do
waveout[i] := Norm(LPF1.Exec(wavein[i]));

далее пишем в файл заголок wav и массив waveout

вот пример обработки с белым шумом
http://dl.dropbox.com/u/9597146/noise.rar
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 29 Окт 2011 10:49:50 · Поправил: Programmist (29 Окт 2011 11:11:20) #  

function Norm(r: real): SmallInt;
Нельзя так делать, Smallint: -32768..32767
Сначала надо вычислять максимальное значение массива, потом приводить к Smallint.

з.ы.
Совсем прааильно будет, если исходный массив RealArray привести к SingleArray, чтобы максимальные значения не вылетали за -+1.0, потом умножить на 32767, поучится нормальная 16-ти битная Data.
Все это делать надо после фильтра, потому, как он нормально работает с плавающей точкой.
Во избежание непонятных результатов тип Real, без особой на то необходимости использовать не надо, Single вполне достаточно, если мало, везде ставим Double.
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 29 Окт 2011 11:36:01 · Поправил: Mesh (29 Окт 2011 11:45:48) #  

rst59 Ну да Programmist дело говорит. Так-то косяков особых в консерватории не видать, но с типами промашка конкретная. Запросто может быть причиной чего угодно. Уж хотя б фаншен в рамки вогнать для приличия что ли, где так

function Norm(r: real): SmallInt;
const
max = 32760;
min = -32760;
begin
if r > max then r := max;
if r < min then r := min;
Result := Round(r);
end;

з.ы. Ессно wavein должен быть smallint array если читаете из 16 битных файлов, иначе тож бардак будет.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 29 Окт 2011 11:59:32 · Поправил: Programmist (29 Окт 2011 12:05:02) #  

Mesh
function Norm(r: real): SmallInt
Не совсем в курсе, что тут хотят, но, имхо эта функция все испортит. Она только ограничит диапазон до нормальных значений. Для правильного результата, нужно приводить весь массив к SmallInt.

з.ы.
Ессно wavein должен быть smallint array если читаете из 16 битных файлов, иначе тож бардак будет.
Ну да, цикл нормализации нужен. Не знаю пока стандартов на 32-х битную дату, но похоже, что все стараются сейчас не выходить за единицу.
Реклама
Google
 Страница:  ««  1  2  3  4  5  6  7  8  »» 

Создавать сообщения могут только зарегистрированные участники форума.
Войти в форум :: » Логин » Пароль
Начало
Средства связи, рации. Купить радиостанции Motorola, Yaesu, Vertex, приемники, антенны.
Время загрузки страницы (сек.): 0.035; miniBB ®