На главную страницу сайта
· Наш магазин · Объявления · Рейтинг · Статьи · Частоты · Копилка · Аэродромы · Live!
· Файлы · Диапазоны · Сигналы · Музей · Mods · LPD-форум · Клуб · Радиостанции
На сайте: гостей - 59,
участников - 6 [ Larr, SLB_MN, alexmurin, ArtHD, nn3ar, Фотограф]
 · Начало · Опросы · События · Статистика · Поиск · Регистрация · Правила · FAQ · Галерея ·
 Форум —› Прочее —› Спектральные игры. FFT, I/Q и прочие забавы. 
Портативные любительские радиостанции Yaesu


Yaesu FT-60R
руб.

Yaesu VX-3R
руб.

Yaesu VX-6R
руб.

Yaesu VX-8DR
руб.

Yaesu FT-1D
руб.
 Страница:  ««  1  2  ...  5  6  7  8  9  ...  34  35  »»Поиск в теме
Автор Сообщение
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 10 Дек 2011 13:11:28 · Поправил: Programmist (11 Дек 2011 04:56:29) #  

Sinus
Елки-палки, так и есть! Наплодил 27 модулей, три дня кручу, десять раз проверял :) а то, что это переназначение массива не заметил. Все собралось моментально. Сигнал идеальный, даже присылать нет смысла, потому, как этот кусок спектра уже наизусть выучил. Спасибо!
Немного передохну и к вечеру напишу цикл для больших файлов. Хочу еще понять, куда попадает зона Найквиста, что все так идеально собралось, надо нарисовать на бумаге.
Получилось в 1.5 раза быстрее, чем я мог даже предположить, в самом лучшем варианте!
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 10 Дек 2011 13:18:15 #  

Хорошо, нарисую попозже сюда "теорию" этого дела. Сначала надо испытать нарезку "тётенек" на куски :)
Реклама
Google
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 10 Дек 2011 13:20:02 · Поправил: Programmist (10 Дек 2011 13:26:48) #  

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

Дата: 10 Дек 2011 14:10:21 #  

Sinus Я б не наставал на возврате каналов типо наоборот. Эт вобще фигну для i/q. Все ваши файлы например, в SA сходу в инверсии, ну и что? Вы так каналы запихнули, другой по другому, эт ровным счётом ничего не значит, ни плохого ни хорошего. Нормал софтина должна разворачивать если нуна на 180 всё.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 10 Дек 2011 14:24:52 #  

Mesh, конечно. В рабочей проге необходима опция выбора I/Q - Q/I.

Но тут вынужден опять сослаться на ваш конвертер. Когда я варганил этот тест-файлик и чекил на нём FFT-алгоритм конверсии, то выбрал из двух равноправных раскладок ту раскладку каналов, которая соответствует конверсии вашим конвертором без установки галочек :) А поскольку в моём "псевдокоде" не предусмотрена смена раскладки I/Q - Q/I, пришлось явно указывать ту, которая нужна для тест-файлика (а иначе он конвертируется неверно) :)
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 10 Дек 2011 14:38:31 #  

Sinus Да ессно как-то нужно определится, ну у меня так вышло. А вот это (а иначе он конвертируется неверно) :) пардоне, как это так? Вся неверность это толкьо разворот спектру. Если у вас чего другое происходит где-то косяк имхо. Нет ни каких теоретических предпосылок к "неверной конвертиловке", поясните что у вас не так "неверно", плз.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 10 Дек 2011 14:49:08 · Поправил: Programmist (10 Дек 2011 15:20:29) #  

Поработать еще придется, цикл выходит сложный, без окон не обойтись, но сделать можно, фильтр-то уже работает.
Сейчас, с блоком 1024 картина получается в точности, как и предполагалось, видны все стыки:


Ну и добивка нулями, нужна, до кратности блоку, этап уже пройденный, дело техники. Сделал только половину кода.

з.ы.
Здесь файл с тетями, сделанный на новом конвертере, без окон (блок 1024): http://files.mail.ru/XNWOWH
На окна сил не осталось :)
Нули в начале не нужны, нужны только в конце, пока не добавлял (лишнее отрезал).
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 10 Дек 2011 15:14:35 · Поправил: Sinus (10 Дек 2011 17:32:38) #  

Mesh, да, с инверсией спектра, и при этом звучит неверно :) Вот результаты конверсии IQ->R в маткаде:

http://www.divshare.com/download/16349420-4fe
test-2__mono_from_my_iq=BA_Fd=8kHz.wav
Это верно.

http://www.divshare.com/download/16349425-e82
test-2__mono_from_my_iq=AB_Fd=8kHz.wav
Это неверно.

Тест-то задумывался для прослушки (и чтоб резалт было слыхать без демодуляторов. Кстати, слово "приём" там взято из переговоров космонавтов с ЦУП)

зы. Вот, картинка спектров для этих НЧ-сигналов:
http://s52.radikal.ru/i138/1112/78/8666cbcca958.jpg
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 10 Дек 2011 15:27:38 · Поправил: Programmist (10 Дек 2011 15:38:24) #  

Sinus
Тест-то задумывался для прослушки.
Это не тест, это реал рабочая штука, скорость обработки радует :)
Окна Ханна уберут весь мусор, по краям спектра.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 10 Дек 2011 15:41:43 · Поправил: Sinus (10 Дек 2011 15:42:21) #  

Programmist это реал рабочая штука

Сильно забегаете вперёд (а то и вбок :)) Стыковка кусков, вероятнее всего, не удастся. Имхо, в том виде алгоритма как сейчас есть, IFFT выдаёт большие колебания Гиббса на концах кусков во времени. Имхо, бороться с ними это всё-равно что делать нормальную КИХ-фильтрацию, о которой нам и говорят опытные ЦОСшники. )) Они дело говорят.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 10 Дек 2011 16:02:54 · Поправил: Programmist (10 Дек 2011 16:05:57) #  

Sinus
Стыковка кусков, вероятнее всего, не удастся
Тети с окошком Ханна, без перекрытия окон: http://files.mail.ru/094IHJ
Перекрытие выровняет амплитуду, как в фильтре, упадет скорость обработки т.к. будет 4 FFT, но там этой скорости с большим запасом, имхо.
Смотрите все на спектре, прекрасно виден весь процесс, боюсь только, что сегодня закончить не успею.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 10 Дек 2011 16:27:25 · Поправил: Programmist (10 Дек 2011 16:49:18) #  

И наконец, долгожданные тети, с 50% перекрытием окнами Ханна:
http://files.mail.ru/8UTZBM
Смотрите, порверяйте, я на сегодня вынужден попрощаться :)
Sinus, еще раз огромное спасибо!


Увеличить


з.ы.
Забыл самое главное, скорость обработки нисколько не упала. При 4х БПФ все обрабатывается страницами, блоки маленькие, а у современных процессоров кэш резиновый :)
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 11 Дек 2011 04:42:19 · Поправил: Programmist (11 Дек 2011 15:21:06) #  

Программа: см. ниже
(в архиве исходник модуля конвертера)
В меню Options есть BPF для I/Q2Real, при включении, кнопка подсвечивается синим цветом. Края спектра - слабое место, может потребоваться фильтрация с использованием этой опции. Как и следовало ожидать, у конвертера есть свои достоинства и недостатки.

В рабочей проге необходима опция выбора I/Q - Q/I.
Не, не надо, достаточно инверсии спектра (кнопка "Invert"), она-то уж точно без потери качества :)
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 11 Дек 2011 06:45:06 · Поправил: RadioKoteg (11 Дек 2011 07:01:58) #  

Programmist Отлично! Может где и кто найдет несоответствие но я его не нашел. Перенос даже в таком виде нормально. Осталось "Припудрить" интерфейс к какому то логическому состоянию.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 11 Дек 2011 07:11:49 · Поправил: RadioKoteg (11 Дек 2011 08:03:19) #  

Вот дядьки тётки длинные средние волны и еще сверхдлинные в придачу. Запись в квадратуре несколько секунд. http://doris.kiev.ua/RS/FREQ/IQ/IQ_0-1700kHz.wav

добавил: В записи дефект незначительный с пропуском пару самплов, позднее перепишу потому что чистого эфира нет, какую то 50 Гц "срань" включили по всем волнам.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 11 Дек 2011 08:14:37 · Поправил: Programmist (12 Дек 2011 03:53:44) #  

RadioKoteg
Слышно все станции хорошо, есть треск, но там всегда так.

Может где и кто найдет несоответствие но я его не нашел.
Сложно сказать, есть непонятные моменты, но сравнивать не с чем, немного позже все-таки добавлю в меню первый конвертер, там надо только фильтр заменить. Лучше иметь возможность выбора, чем что-то потерять. Еще нужно обратную операцию, пускай будет.

з.ы.
Еще там первые 2048 сэмплов с фэйдом получаются, но это не стал делать, оно уйдет, когда будут команды вырезать-вставить.
(доработано в версии 04).

з.ы.з.ы.
Исправил ошибку, хз, как она попала в 3-ю версию, при последнем сохранении.
Добавил опционально прежний конвертер (Time Zone I/Q Converter, кнопка подсвечена красным). В реестре опция не запоминается, сделано временно.
Смущает пропадание частоты в этом файле:
http://www.radioscanner.ru/uploader/2011/testiq10k.rar
Если просто шесть раз нажать на I/Q2R. Может оно так и надо, не знаю, но очень подозрительно.
Sinus, если будет не сложно, посмотрите, плз., почему так получается.
В фильтре тоже были некоторые изменения, все модули обработки должны быть в едином формате и просто добавляются, по мере необходимости. Формат еще не родился :)
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 11 Дек 2011 22:21:38 · Поправил: Sinus (11 Дек 2011 22:23:55) #  

Programmist
Если просто шесть раз нажать на I/Q2R. Может оно так и надо, не знаю, но очень подозрительно.
Шесть нельзя. Нужно нажать 65536 раз и при этом каждый раз повторять "трах-тибидох".

А серьёзно - говорю ж, действия с FFT-спектром хороши только при постоянной длине сигналов T (когда сетка FFT-частот фиксирована). Если же резать сигнал на части или удлинять его, то появляются другие бины, и FFT-спектр меняется. Вспомним:

petr0v задал нам домашнее задание №1 . Не знаю, выполнили ли Вы его; в любом случае вдумайтесь, плз, в тот результат:

Пусть в исходном сигнале есть синусное колебание с частотой "между бинами":
http://s48.radikal.ru/i121/1112/da/e1037eef50c7.jpg

Делаем FFT для этой синусоиды; в спектре будут гармоники (из-за эффекта растекания):
http://s017.radikal.ru/i404/1112/ed/2750a6a8a87b.jpg

Обнуляем верхнюю половину гармоник, т.е. делаем идеальный ФНЧ методом FFT:
http://s017.radikal.ru/i414/1112/00/5bcc6c005c3a.jpg

Обратное пр-е (IFFT) даёт нам результат фильтрации как новую синусоиду во времени :
http://s017.radikal.ru/i435/1112/42/c3089bd266dd.jpg
(если повторять с ней FFT-IFFT, то два последних графика будут просто повторяться, т.е. результат фильтрации сохранается)

А теперь внимание! Удлиним эту (профильтрованную) синусоиду, просто дополнив её нулевыми значениями. И посмотрим, каким стал её FFT-спектр:
http://s47.radikal.ru/i116/1112/4e/644ad3f46e83.jpg

Вот вам и FFT-фильтрация - что есть, что нет, чистый самообман... :-) В чём же дело? Посмотрим на кусочек этого спектра с высоким разрешением по частоте:
http://s005.radikal.ru/i212/1112/f9/7e4f33449ab1.jpg

Видно, что те бины, которые мы раньше обнулили, остались равными нулю - это каждый четвёртый бин выше частоты среза. Но из-за удлинения сигнала (в данном примере в четыре раза) между старыми бинами появилось по 3 штуки новых: новые сетка частот есть f(k) = k / T, где T - новая длительность сигнала. Старая FFT-фильтрация не действовала на наши новые бины - вот они спокойно себе и живут своей жизнью, обнуляться вовсе не думают.)))

Так же песочным замком окажутся и результаты других действий с FFT-спектром, как только мы поменяем длину сигнала. Вывод: если со спектром IQ-R преобразований мы уже разобрались, то пора переходить к серьёзной работе - во временнОй области, как тому учит опыт многих поколений славных ЦОСшников.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 11 Дек 2011 22:54:27 · Поправил: Programmist (11 Дек 2011 23:02:39) #  

Sinus
между старыми бинами появилось по 3 штуки новых
Так это с любым сигналом такое произойдет, как его не фильтруй, если потом удлинять, то между бинами все что угодно может появиться, имхо. Просто после ФФТ этот эффект более заметен, по причине полного обнуления, если добавить небольшой шум, все встанет на свои места. Полностью обнулять нельзя, только с окном.
Во временной области, конечно надо попробовать, но для этого у меня ничего нет. Знаю только то, что там идеальный фильтр будет работать бесконечно долго, а обмануть эту зависимость не удастся.
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 11 Дек 2011 23:01:09 #  

Sinus

Вывод: если со спектром IQ-R преобразований мы уже разобрались

Что-то я уже потерял нить обсуждения, для блока длиной в степень двойки преобразование из IQ в реальный сигнал по вашему алгоритму идеальное или нет? Какой на счёт этого вывод?
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 11 Дек 2011 23:08:17 · Поправил: Programmist (11 Дек 2011 23:19:48) #  

Какой на счёт этого вывод?
Вывод из всего этого один - оно не может быть идеальным на краях спектра. Должен быть запас, вопрос только в том, сколько.
Еще понятно то, что ФФТ может преподнести сюрприз, в самом неподходящем месте и использовать его надо там, где это возможно, если возможно.
Интересно, как это в SA реализовано, насколько, что там лучше или хуже, а то выходит так, что и стремиться больше не к чему.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 11 Дек 2011 23:39:00 · Поправил: Sinus (11 Дек 2011 23:57:22) #  

petr0v
для блока длиной в степень двойки преобразование из IQ в реальный сигнал по вашему алгоритму идеальное или нет? Какой на счёт этого вывод?

Полагаю, в математическом смысле идеальное: ведь и преобразования-то никакого нет, просто фурье-амплитуды двух дискретных вещественных сигналов I(t) и Q(t) перегруппировываются так, чтобы стать фурье-амплитудами одного дискретного вещественного сигнала S(t).

Перемножений при этом нет, есть только сложение-вычитание амплитуд, и изменение номеров бинов. Всё это обратимо. Соответствие между дискретным сигналом с N отсчётами и его ДПФ-амплитудами - взаимно-однозначное. Поэтому полагаю, неидеальности неоткуда взяться...

Но квантование уровня при записи в вав-файлы привносит шум и "палки" в спектры - так думаю. Количественно я не анализировал этот аспект. На опыте замечаю отклонения от идеальности. Так, уже в нескольких своих примерах столкнулся с тем, что после нарезки FFT-методом широкой полосы частот на более узкие пОлосы (с записью в вав-файлы), в спектре демодулированных сигналов появляются сильно выступающие по амплитуде "палки", которых у меня не было в исходных модулирующих сигналах...

Когда у Вас будет время, при случае, подбрасывайте, плз, нам ещё поучительные дом. задания. Потому как в свободном полёте мы с Programmistom можем легко промахнуться мимо существенных моментов. ))
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 11 Дек 2011 23:48:03 · Поправил: Programmist (12 Дек 2011 03:57:33) #  

Sinus
квантование уровня при записи в вав-файлы привносит шум и "палки" в спектры
Да, 16 бит для обработки не подходят однозначно, поэтому выбросил автоматическое слежение за амплитудой. Возможен только контроль "на глаз", после любой операции, иначе ничего не получается. Программа сама ничего сделать не может.
А с фильтром как раз все более-менее прилично, если амплитуда в норме. Много проверял, пока серьезных проблем не нашел.
Осталось только собрать третий вариант конвертера - комбинированный :)

Нужно нажать 65536 раз и при этом каждый раз повторять "трах-тибидох".
Это хороший рабочий метод. Подходит для обработки звука, когда голос можно обработать так, что его слышно в таких каналах, где вообще ничего слышно быть не может :)

з.ы.
А вообще конвертер будет работать идеально, при условии, что сигнал заранее отфильтрован и находится в пределах полосы, ну и конечно, 32 бита.
Итог на сегодня таков: Все беды возникают в основном из-за 16-ти бит, поэтому амплитуду лучше сразу нормализовать до 60-70%. Более высокие значения амплитуды для сигнала - смерть. Инверсия спектра искажений не вносит. BPF желательно включить, небольшие потери по краям неизбежны. Увеличил размер блока до 16384, имхо, это оптимально по соотношению скорость-качество.
Программа здесь (версия 06): http://www.radioscanner.ru/uploader/2011/ceplusdemo06.rar
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 12 Дек 2011 10:56:33 · Поправил: petr0v (12 Дек 2011 10:56:59) #  

Sinus

Вы на самом деле делаете две операции. Интерполяцию в два раза чтобы полосовой сигнал был представим в действительном виде и перенос спектра. Перенос отбросим. Опять таки возьмём комплексный синус между бинами, небольшой блок, по вашему алгоритму делаем FFT и добавляем нулей, с другой стороны мы сразу можем сгенерировать интерполированную синусоиду размером блока в два раза больше и тоже делаем FFT, результаты не совпадают. Чтобы получить из правильного спектра синусоиды занулённый кусок вы фактически прибавили к синусоде гармошечки в зануляемых бинах которых не было в исходной синусоиде и уровень их не маленький.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 12 Дек 2011 16:03:54 · Поправил: Programmist (12 Дек 2011 18:30:07) #  

А у меня свои методы проверки. Пишу цикл for i:=0 to 4095 do (4096 преобразований I/Q2R), нажимаю кнопку, сижу, курю. Главное, не забыть при этом мысленно повторять "трах-тибидох" :)) Далее, в Options -> Format Interpretator выставляю 2 Chennels и выполняю команду Invert, полученный результат сохраняю и сравниваю с исходником. Пока на глаз.
Результат здесь: http://files.mail.ru/LXVK4A (4.5 метра wav)
Вот теперь можно подумать, почему оно так получилось.
Кто не верит, может проверить самостоятельно, исходный сигнал есть в архиве. (Фильтр BPF был включен).
Имхо, полезный сигнал должен занимать не более 90% полосы, тогда "бесконечный конвертер" будет работать. Здесь сам спектр дает подсказку, сколько нужно отрезать изначально, чтобы все было хорошо.
Похоже, что в железе RadioKoteg, откуда берутся реальные сигналы это уже предусмотрено.
*В программе BPF реализован на FFT и работает в общем цикле.
*В окошке "Imade" (размер по X) неверно указан знак деления (осталось от старого варианта), но это ни на что не влияет. Должен быть знак умножения, исправлю в следующей версии.

з.ы.
Создание "идеального фильтра" чем-то очень похоже на создание "вечного двигателя", но занятие интересное :)

з.ы.з.ы.
Здесь результат 8192 "трах-тибидохов", но исходный файл (до экзекуции) был подрезан по краям и операции выполнялись с точностью в 32 бита: http://files.mail.ru/E3YJH1
Так, что, если мы с Sinusom где и ошиблись, то не на много, 65535 делать не стал, много курить вредно :)
32-х битная считалка в принципе готова, но выкладывать ее смысла нет, пока нет конкретного описания всех форматов, могут возникнуть непонятки.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 12 Дек 2011 17:45:31 #  

Mesh А у вас есть свое мнение?
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 12 Дек 2011 19:21:34 · Поправил: Programmist (12 Дек 2011 19:22:12) #  

Скоро будет 32-х битная версия, которая и докажет то, что я пытался доказать на протяжении сотни страниц в "особенностях бескислородной меди": Формат 16 бит - маст дай, а 24 бита, это полумера и рассматривать его можно только как временное явление.
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 12 Дек 2011 21:28:55 · Поправил: Mesh (12 Дек 2011 21:29:26) #  

RadioKoteg Mesh А у вас есть свое мнение? Смотря про что. Я хз что вы имеете ввиду. Нужно уточинить.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 12 Дек 2011 22:22:18 #  

petr0v

Спасибо, пойду подумаю. Мне-то казалось, что интерполяции нет, потому что суммарное кол-во отсчётов в Re и Im частях комплексного сигнала равно кол-ву отсчётов веществ. сигнала.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 12 Дек 2011 23:32:50 #  

Mesh А у вас есть свое мнение? Смотря про что. Я хз что вы имеете ввиду. Нужно уточинить. о точности переносов.
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 13 Дек 2011 00:37:49 #  

RadioKoteg Вы наверно всёж про конвертилово, а не про перенос. Дык конвертирует, не вижу потерь по качеству.
Реклама
Google
 Страница:  ««  1  2  ...  5  6  7  8  9  ...  34  35  »» 

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