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


Hytera TC-320
руб.

Hytera TC-508
руб.

Hytera TC-580
руб.

Hytera PD-355
руб.

Hytera X1E
руб.
 Страница:  ««  1  2  ...  6  7  8  9  10  ...  34  35  »»Поиск в теме
Автор Сообщение
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 13 Дек 2011 01:26:57 · Поправил: RadioKoteg (13 Дек 2011 01:53:54) #  

Programmist

Как не старался с этого http://doris.kiev.ua/RS/FREQ/IQ/F%20%202011-12-12%2017-00-00%20(2).wav идет зеркалка при конвертировании в низ.
Идентично делаю с этим http://doris.kiev.ua/RS/FREQ/IQ/test-1__iq=BA_3_AM-signals_iq-Fd=512kHz.wav все нормально.


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

Дата: 13 Дек 2011 01:51:43 · Поправил: Programmist (13 Дек 2011 03:11:55) #  

RadioKoteg
Снос плохо работает и потери качества все равно есть. Скоро положу версию, где потерь нет. Она уже готова, но там проблема с дурацким 24-х битным форматом, при сохранении больших файлов.
Реклама
Google
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 13 Дек 2011 02:23:14 #  

Кажется работает, "переконвертил" все что было под руками. Скорость работы ну то пока не обсуждаю потому что не с чем сравнивать.

Programmist IMHO можно добавить сохранение картинки спектра.

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

Дата: 13 Дек 2011 02:35:59 #  

RadioKoteg
можно добавить сохранение картинки спектра.
Это там есть - кнопка с фотоаппаратом, в правом верхнем углу. Седьмая версия хоть и без потерь, но ее потом надо выбросить, много ошибок.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 13 Дек 2011 03:06:23 #  

Programmist 30 Мегабайт! http://doris.kiev.ua/RS/FREQ/IQ/Spectr_2_IQ_0-1700kHz.wav.jpg

А шкалу можно? Время и Герцы?
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 13 Дек 2011 03:11:23 · Поправил: Programmist (13 Дек 2011 03:17:10) #  

RadioKoteg
А шкалу можно? Время и Герцы?
Конечно можно, это проще всего и не интересно, поэтому и нет пока :)
Заложено в эту прогу возможностей много, главное все правильно расписать.
Семерку удаляю, там с ней еще работать надо.

з.ы.
А спектр 30Мб красивый :)
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 13 Дек 2011 03:32:59 #  

Programmist я вас понял.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 13 Дек 2011 09:48:54 · Поправил: Programmist (13 Дек 2011 17:36:05) #  

Вот 32 бита "бесконечный" конвертер:
http://www.radioscanner.ru/files/recording/file12938/
Перенес его сюда, чтобы можно было обновлять. Текущая демо-версия - 09.
Можно сказать, что сейчас качество конвертера хорошее, понимает форматы 8, 16, 24 и 32 бита.
Максимальный размер файла не проверял, но думаю, что более сотни метров (дальше возможны глюки).
Файлы, формат которых не удалось определить, читаются и сохраняются, как 16-ти битные wav-ы.
Думаю что будущем можно добавить туда АМ и ЧМ детекторы, "дядьки-тетьки"
Пока не надоело, буду пилить дальше, она золотая, может быть и до этого дойдем :)
Важный момент! Перед сохранением файла, если амплитуда горит красным, необходима нормализация.
Принимаются все предложения по усовершенствованию.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 14 Дек 2011 02:24:44 · Поправил: Sinus (14 Дек 2011 02:25:54) #  

Дом. задание № 2
Вот что у меня получилось. Взял N = 1024 отсчётов прежней синусоиды аккурат между 255-м и 256-м бинами . FFT-спектр этой синусоиды дополнил равными нулю амплитудами на бинах выше N / 2, удлинив тем самым спектр в 4 раза. И выполнил обратное пр-е Фурье, IFFT, - тем самым выполнил 4-кратную интерполяцию, до 4096 точек. На графиках показано сравнение результата интерполяции с точным расчётом 4096 точек синусоиды:

http://s017.radikal.ru/i426/1112/1a/fe7829418961.jpg

Вот аналогичный результат 16-кратной интерполяции:
http://s017.radikal.ru/i418/1112/b0/0bc5d07e68a4.jpg

Ну что ж, вроде и не сильно плохо работает FFT-интерполяция: в середине сигнала совпадение результата интерполяции с точной синусоидой не хуже десятых процента (смотрел выборочно).
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 14 Дек 2011 02:48:37 #  

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

Раньше ответил, будто идеальное. Теперь вношу поправку. Численная проверка (точная, без квантования уровней) показала, что при ранее указанном мной IQ -->R веществ. сигнал S(n) восстанавливается не точно: чётные-то отсчёты S(0), S(2), ... воспроизводятся хорошо (с погрешностью маткадного FFT-IFFT), а вот нечётные гораздо хуже.

Причина мне известна. Те формулы точны лишь в пределе бесконечного числа отсчётов N, (плюс условие ограниченности спектра). Т.е. я там поленился аккуратно учесть конечность N. Но в одном из постов упомянул о возможности "мелкого усовершенствования" :-)

Вот оно: при конечном N сформированные там при R --> IQ фурье-амплитуды B(k) надо домножать на фазовый множитель exp(i2пи*k/N). При восстановлении же (IQ --> R) результат IFFT(B) надо домножать на обратной множитель, exp(-i2пи*k/N), и лишь после этого использовать в качестве фурье-амплитуд B(k). Тогда пр-е туда-обратно становится идеальным - в том смысле, что исходный веществ. сигнал воспроизводится с точностью машинного FFT-IFFT.

Как же выглядят эти процедуры во временном домене? Такое пр-е R --> IQ методом FFT точно соответствует умножению отсчётов S(n) на комплексную синусоиду с частотой - Fdiscr / 4, то есть на exp(-i2пи*n/4) = (-i)n. Затем из полученного компл. сигнала U(n) = S(n)(-i)n выделяются вещ. A(n) и мнимая B(n) части по формуле: U = (1/2)(A +iB). И, наконец (перед записью в 2-канальный вав с пониженной вдвое частотой дискр.) они децимируются вдвое.

Как децимируются - полезно взглянуть Programmistу, чтобы осознать "магию" мнимой единицы i. Когда n пробегает значения 0, 1, 2, 3, 4, ... , множитель (-i)n принимает значения 1, -i, -1, i, 1, (далее всё повторяется). Поэтому страшные слова "умножить S(n) на комплексную синусоиду с частотой - Fdiscr / 4 и выделить Re и Im части" означают здесь простое дело - составить две последовательности:

S(0), 0, -S(2), 0, S(4), 0, -S(6), 0, ... (последний, N-1 ый элемент, будет ноль, так как у нас N есть степень двойки);

0, -S(1), 0, S(3), 0, -S(5), 0, S(7), ... (последним будет отсчёт S(N-1)).

Децимация означает - отбросить здесь нули. Эти укоротившиеся вдвое массивы и есть наши два канала I/Q. Такое преобразование R --> IQ эквивалентно нашим громоздким "спектральным играм" (надеюсь, не ошибся в математич. доказательстве этого факта )). Обратное пр-е, IQ -->R, сводится к компоновке из указанных двух массивов единого массива S(0), S(1), S(2), ,,, S(N-1).

Programmist: Принимаются все предложения по усовершенствованию. Вот, можно испытать указанное предложение.

petr0v
Вы на самом деле делаете две операции. Интерполяцию в два раза чтобы полосовой сигнал был представим в действительном виде и перенос спектра. Если теперь правильно понимаю, интерполяция при IQ -->R состоит в добавлении нулей между отсчётами в последовательностях I, Q, которые затем складываются (при нужном изменении знаков). Но не вижу, где тут может произойти "порча" спектра... И смущён отсутствием фильтрации, так как в "фирменных" конверторах она, вроде бы, есть, раз видна задержка выходного сигнала. А тут всё должно восстанавливаться идеально, без всяких задержек... - я проверил это всё на той же синусоиде аккурат между бинами.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 14 Дек 2011 03:16:33 · Поправил: Programmist (14 Дек 2011 10:31:17) #  

Sinus
До конца тоже не разобрался, очень смущают частоты Найквиста, прямое-обратное преобразование работает идеально, но при децимации с ними надо что-то решать, иначе падает точность.
Пока привожу в порядок работу с форматами, 24 бита уже сделал нормально, остался 8-ми битный формат, в нем все значения положительные 0-255. Не могу найти середину :)
В Куле этот вопрос решен интересно - середины нет. Нормализованный до нуля сигнал - это шум между значениями амплитуды 127 и 128.

з.ы.
Программу обновил до 10-ой версии. Показывает частоту и время. Добавил режекторный фильтр и еще что-то.
Есть выбор формата для сохранения и чтения, куча "пипеток" из фотошопа, для "захвата" частоты. Не знаю, насколько это удобно, время покажет.
mikasa76
Участник
Offline1.8
с сен 2008
USSR
Сообщений: 305

Дата: 14 Дек 2011 10:23:20 · Поправил: mikasa76 (14 Дек 2011 10:28:46) #  

Sinus Как же выглядят эти процедуры во временном домене? решил и я немного "поиграть" в эти игры, так сказать рамяться :)))). набросал пока конвертер R --> IQ с обработкой во временном домене. вот пример конверта:

Ваш файл с тремя АМ:

test-1__mono_3_AM-signals_Fd=1024kHz.wav

и мой вариант преобразованного:

test-1__iq_3_AM-signals_Fd=512kHz_r2iq.wav

вроде как совпадает с Вашим же вариантом (возможен разворот квадратур, т.е. I/Q поменяны местами):

test-1__iq=BA_3_AM-signals_iq-Fd=512kHz.wav
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 14 Дек 2011 10:34:40 #  

mikasa76
вариант преобразованного
Спектр перевернут, а так похоже.
mikasa76
Участник
Offline1.8
с сен 2008
USSR
Сообщений: 305

Дата: 14 Дек 2011 10:45:28 #  

Programmist Да, в исходном файле Sinus имеется реверс квадратур (инверсия спектра), у меня прямая последовательность )))
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 14 Дек 2011 10:51:45 · Поправил: Programmist (14 Дек 2011 11:05:50) #  

Точно не известно, где верх, где низ, нужен нормальный тестовый сигнал, а пока тут одни самоделки :)
Прогу еще раз обновил, как всегда, забыл про деление на 0, при ручном вводе амплитуды.
Диапазон там огромный, можно задать несколько тысячных процента, потом восстановить, качество не падает. 32 бита рулят.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 14 Дек 2011 13:32:17 #  

mikasa76, спасибо, вечером с великим интересом посмотрю Ваш результат преобразования 3 АМ )). Сейчас - на работе, почти нет возможности...

Да, реверс квадратур в моём файле сделан сознательно, и в названии файла это отражено: iq=BA, то есть в канал I записан массив B (мнимая часть комплексного сигнала), в канал Q - массив A (вещественная часть). Правда, тогда я наугад решил, что в канал 0 wav-файла пишется I, а в канал 1 пришется Q. Конечно, нет проблемы при записи или после чтения поменять их местами ))

Programmist
работает идеально, но при децимации с ними надо что-то решать, иначе падает точность.

Не идеально. Идеальнее будет с фазовым множителем exp(i2пи*k/N) для фурье-амплитуд B(k). Но Вы с ним не связывайтесь, если у Вас по-прежнему нету i в компьютере. )) Лучше попробуйте спрограммировать конвертеры туда-обратно, исходя из предположения, что:

канал I (в Ваших терминах ArrayA) это отсчёты S(0), -S(2), S(4), -S(6), ...
канал Q (в Ваших терминах ArrayB) это отсчёты -S(1), S(3), -S(5), S(7), ...

Real-сигнал (Ваш ArrayS) это отсчёты S(0), S(1), S(2), S(3), S(4), S(5), S(6), S(7)... ,
где S(n) это отсчёт сигнала в n-ый момент времени t = n / Fdiscr.

Так на данный момент понимаю картину, но ещё не успел её проверить на всех примерах )).
mikasa76
Участник
Offline1.8
с сен 2008
USSR
Сообщений: 305

Дата: 14 Дек 2011 13:53:42 #  

Sinus ок, спасибо. Конечно, нет проблемы при записи или после чтения поменять их местами )) согласен, этот вариант тоже нужно учитывать. сегодня/завтра попробую добить обратный конвертер (I/Q --> Real), упакую это все хозяйство в dll и выложу. )))))
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 14 Дек 2011 14:32:27 #  

Sinus

Если теперь правильно понимаю, интерполяция при IQ -->R состоит в добавлении нулей между отсчётами в последовательностях I, Q, которые затем складываются (при нужном изменении знаков). Но не вижу, где тут может произойти "порча" спектра... И смущён отсутствием фильтрации, так как в "фирменных" конверторах она, вроде бы, есть, раз видна задержка выходного сигнала.

Да во временной области добавляем нули между отсчётами, а потом обязательная фильтрация ФНЧ, затем умножаем на комплексную синусоиду и берём действительную часть. Вам нужно понять что то как вы делаете фильтрацию с помощью FFT фильтрацией не является, в результате получаются спектральные наложения. Фильтрация блока длиной N1 отсчётов с помощью фильтра с ИХ длиной N2 отсчётов с помощью FFT делается так:

дополняем блоки данных и фильтра нулями до длины N1+N2-1, делаем FFT дополненных блоков, перемножаем результаты FFT, делаем iFFT. Ничего нового тут нету, всё это описано во всех классических книжках по ЦОС. Выводы делать рано пока это не освоите, никакого идеала в неправильном применении FFT нет и быть не может.
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 14 Дек 2011 15:45:35 #  

petr0v, спасибо, буду это додумывать.
Конечно же в книгах всё давно есть. И знаю, что свёртку блока данных с ИХ фильтра быстрее делать в частотном домене - как перемножение фурье-образов с последующим обратным пр-ем Фурье.

Но сама необходимость фильтрации мне не очевидна (подчеркну - это впечатление дилетанта в ЦОС)), если всего-то требуется сдвинуть вдоль оси частот всю цепочку фурье-амплитуд вместе со всеми их бесконечными репликами.

Возможно, подводит некоторый навык мыслить понятиями непрерывного пр-я Фурье - с непрерывными временем-частотой (в физике это обычное дело, никаких спектральных наложений или иных "граблей" там нет). К тому же, привык считать, что если отображение обратимо, то оно безопасно - действия с образами эквивалентны действиям с оригиналами. И думал, если спектральное наложение - это необратимое изменение, то появиться оно может только в необратимой процедуре.

Значит, дискретному FT придётся учиться заново - самостоятельно вывести (чтобы понять) теоремы ЦОС, разобрать характерные примеры, чтобы в них видеть и предвидеть спектральные наложения, о которых Вы говорите, научиться оценивать их масштаб. Это хорошо, учиться люблю :)
mikasa76
Участник
Offline1.8
с сен 2008
USSR
Сообщений: 305

Дата: 14 Дек 2011 16:28:54 · Поправил: mikasa76 (14 Дек 2011 16:31:59) #  

Sinus добавил у себя обратный конвертер IQ --> Real с обработкой опять таки во временном домене. алгоритм простой и в точности такой как описал Петров. вот пример конверта:

Ваш файл с тремя АМ:

test-1__iq=BA_3_AM-signals_iq-Fd=512kHz.wav

и мой вариант преобразованного (предварительно в Вашем исходном файле реверснул квадратуры):

test-1__real=AB_3_AM-signals_iq-Fd=1024kHz_iq2r.wav

который практически (незначительное снижение С/Ш за счет интерполяции) совпадает с Вашим же исходным моно вариантом:

test-1__mono_3_AM-signals_Fd=1024kHz.wav

И знаю, что свёртку блока данных с ИХ фильтра быстрее делать в частотном домене - как перемножение фурье-образов с последующим обратным пр-ем Фурье. А вот это под большим вопросом, что быстрее в итоге.

Но сама необходимость фильтрации мне не очевидна (подчеркну - это впечатление дилетанта в ЦОС)), если всего-то требуется сдвинуть вдоль оси частот всю цепочку фурье-амплитуд вместе со всеми их бесконечными репликами. При любом ресамплинге фильтрация обязательна, как при переходе IQ --> Real, так и обратно.
petr0v
Участник
Offline2.3
с мая 2010
Balakhna
Сообщений: 412

Дата: 14 Дек 2011 17:06:12 #  

Sinus

плюс условие ограниченности спектра

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

Дата: 14 Дек 2011 20:08:50 · Поправил: Programmist (14 Дек 2011 21:23:19) #  

Sinus
канал I (в Ваших терминах ArrayA) это отсчёты S(0), -S(2), S(4), -S(6), ...
канал Q (в Ваших терминах ArrayB) это отсчёты -S(1), S(3), -S(5), S(7), ...
Real-сигнал (Ваш ArrayS) это отсчёты S(0), S(1), S(2), S(3), S(4), S(5), S(6), S(7)... ,

Проверю, если это так, тогда придется выбросить компилятор :))

з.ы.
Нет, не получиться, имхо это слишком просто. Вот результат: http://www.radioscanner.ru/uploader/2011/iq2rtestfiles.rar

mikasa76
упакую это все хозяйство в dll и выложу
Так понимаю, что все хозяйство написано на C++ ?
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 14 Дек 2011 21:45:26 · Поправил: Sinus (14 Дек 2011 21:52:11) #  

mikasa76, petr0v, Programmist

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

Дата: 14 Дек 2011 21:48:51 · Поправил: Mesh (14 Дек 2011 21:51:28) #  

Sinus Значит, дискретному FT придётся учиться заново Имхо, вы и так тут неплохо так сказать несётесь вперёд. В отличии от некоторых, пальцем тыкать не буду. ;) Собсно нужно просто вьехать, что что угодно куда угодно и как угодно не двигается не переносится, усё имеет разумные рамки и естественные ограничивания. Нуно просто мыслить в этих рамках и собсно работать с учётом этих ограничиваний, через какое-то время всё устаканится, и будет и у вас "шерсть дыбом" вставать когда "откровения" читать будете, "типо 16 бит мастадй, гиги в жипеге рулез, у мя лучшее разарешение что есь в мире, тока не знаю нах оно нуно" ;-)
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 14 Дек 2011 22:01:08 #  

Mesh, да, понятно. Но всегда есть что-то более очевидное, а что-то менее. Отдельные факты я уже вывел и на примерах проверил, а о других пока ещё сужу интуитивно... надо дальше учиться.))
mikasa76
Участник
Offline1.8
с сен 2008
USSR
Сообщений: 305

Дата: 14 Дек 2011 22:03:23 #  

Programmist Так понимаю, что все хозяйство написано на C++ ? ага, Intel C++ Compiler + IPP (Integrated Performance Primitives)
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 14 Дек 2011 22:11:15 #  

Sinus Блин, критичиски своё перечитал, хреново выразился. :-) Типо всё украдено до нас, и даже и не думайте чего новогу узнать, типо тупо повторяйте. Нет ессно я не про это. Ну да ладно, имхо вы поняли как наддо.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 15 Дек 2011 00:00:44 #  

mikasa76
А вот это под большим вопросом, что быстрее в итоге.
Это точно, сделал фильтр высокого качества, но цена за это - время. Обнулять бины можно только постепенно, тогда артефактов не наблюдается. Физику не обманешь, для хорошей фильтрации нужно четко определенное количество вычислений и не важно, что это будет, БПФ или временная область.
Выкладывать пока смысла не вижу, имхо и так понятно: за качество расплата - время.
mikasa76
Участник
Offline1.8
с сен 2008
USSR
Сообщений: 305

Дата: 15 Дек 2011 00:13:03 #  

Programmist я у себя предусмотрел 3 режима качества: low, medium, high. соответственно и скорость обработки будет обратно противоположна этому ряду (((((. здесь действительно - природу не обманешь, нужно искать компромисс ))))))))
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 15 Дек 2011 00:31:03 · Поправил: Programmist (15 Дек 2011 07:55:49) #  

mikasa76
Да, качество можно задать любое, а на форме уже места не хватает. Если выводить все возможные настройки, потом сам, через некоторое время, не поймешь, что это такое было.
Вижу только один вариант - жать на кнопки и смотреть на спектр, если мало - жать еще несколько раз :)
Для того и усиление с разрешением большое нужно, а не нах неизвестно зачем, как Mesh думает :)

з.ы.
Версию обновил до 11-ой. Фильтры настроил оптимально, режет спектру, как мясорубка, амплитуду держит.
Реклама
Google
 Страница:  ««  1  2  ...  6  7  8  9  10  ...  34  35  »» 

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