Автор |
Сообщение |
|
Дата: 02 Дек 2011 21:07:46
#
Programmist
> Так спектр она сносит? Сносит. Теток видно? Видно
Тема теток не раскрыта :) Скриншоты в студию :) Вот SA Free их точно не показывает, может в полной версии есть, надо у Mesh спросить...
|
|
Дата: 02 Дек 2011 21:20:56 · Поправил: Programmist (03 Дек 2011 10:11:34)
#
Sinus
Или я не правильно понял эту фразу, или здесь принципиальная ошибка. Ведь по Y идёт шкала частоты, и на ней должны умещаться частоты из заранее фиксированного диапазона: от 0 до Fdiscr/2. Этим диапазоном и определяется размер всех блоков по вертикали.
Должны умещаться, но реально всех частот там нет. Разрешение по частоте (Y) задается размером блока FFT/2. Чтобы там присутствовали все частоты, с шагом в 1 Герц, размер блока должен быть равен Fdiscr, что не возможно т.к. блок - степень двойки. С картинкой тут как раз все в порядке.
А сотворил какое-то безобразие со сносом частоты. Неизвестно зачем умножив массив с данными на синусоиду, когда надо умножать комплексную экспоненту этой синусоиды на комплексную экспоненту сигнала, потом конвертить в реал, ну или что-то в этом роде, надо разбираться, или напишите нормальную формулу, что на что надо умножать. Голову можно сломать, пока поймешь, что там и в какую сторону будет перевернуто.
з.ы.
Т.е. картинка более короткого (во времени) блока должна размазываться по частоте, терять чёткость вдоль Y, но при этом занимать прежнее количество пикселей по Y.
Совершенно верно, только размазывать (растягивать) картинку я не стал. Это делает графический модуль, реальное количество пикселей на битмапе по оси Y, всегда остается равным количеству полученных амплитуд (половина блока). Модуль FFT комплексный, вторая половина блока, является точной зеркальной копией первой, как по I, так и по Q. Частоты Найквиста не отображаются и закрашиваются на картинке чередующимися черными и синими пикселями.
*Под битмапом здесь подразумевается не то, что видно на экране, а реальный битмап, который выдается при сохранении и чей размер указан в статусной строке.
DVE
Тема теток не раскрыта :) Скриншоты в студию :)
А у меня показывает :) Вот она, тетка, которая "Андреевский спуск":
Увеличить
Вторая сидит много ниже :) Файл - оригинальный I/Q, без обрезки и обработки в других редакторах.
з.ы.ы.
Написано на тему сдвига много интересного. Кто два гетеродина предлагает, кто несколько страниц формул, с предупреждением, что в итоге все равно получится хрен знает что. А нужно нормальное и понятное решение.
А то, что сейчас есть, это точно для мазохистов находка. Можно получить из тети дядю или какое другое существо инопланетное, поломав перед этим голову, в какую сторону крутить :)
И подход к проверке здесь может быть только один: Не работает - в мусорку, а проблему - в студию :)
В общем, нормально пока только кнопки на нижней панели работают, ну и LPF еще, правда, не понятно зачем он там сейчас нужен. |
Реклама Google
|
|
|
Дата: 02 Дек 2011 21:35:30 · Поправил: Mesh (02 Дек 2011 21:43:17)
#
|
|
Дата: 02 Дек 2011 21:50:22 · Поправил: DVE (02 Дек 2011 21:50:49)
#
А, я-то думал сис картинка какая типа SSTV, ну а так неинтересно :)))
|
|
Дата: 02 Дек 2011 21:59:37
#
DVE
ну а так неинтересно :)))
SA Full покажет все! :)))
|
|
Дата: 03 Дек 2011 14:24:48 · Поправил: sea (03 Дек 2011 14:26:11)
#
Sinus в целом ваша идея нравится - создать набор тестовых сигналов, показать общепринятые алгоритмы. И пусть Mesh'у это не интересно, что есть программы, что есть сигналы и все это нахненадо. Пусть будет. Пусть будут еще программы, пусть программисты придут к выводам. Вот мол есть куча сигналов - я вот мало нашел полезного для себя. Нафиг идеалистические сигналы - надо с реальными сигналами работать. Так надо сначала 2 на 2 умножать научиться, а потом в ВУЗ идти. От простого к сложному, а не сразу.
Вы, Mesh, прямо как поручик Ржевский. Вроде появляется какое-то действие на форуме, и тут приходите вы и говорите "оно мне не надо, у меня все есть, все и так понятно". Просить вас заткнуться и перестать выеживаться у меня права нет. Но в целом уже надоело. А дальше по всем правилам жанра вы меня пошлете вон из темы или ресурса... Скукота.
|
|
Дата: 03 Дек 2011 15:14:04
#
sea Просить вас заткнуться и перестать выеживаться у меня права нет. Ой как мило! Да как скажете тов начальник. Заткнутся так заткнутся, ни каких поблем у мя с этим сособо не будет. На скока мне затнкутся, на месяц, на два, на совсем? Ваши предложения плз в студию.
|
|
Дата: 03 Дек 2011 17:10:50 · Поправил: Programmist (03 Дек 2011 17:30:15)
#
sea
Нафиг идеалистические сигналы - надо с реальными сигналами работать.
Так тут и есть реальный сигнал, с тетками, другое дело, что не все получается, так, что если до критики, то оно правильно, а то я прилепил генератор, посмотрел - вроде спектр двигает, теток слышно, а дальше проверять не стал, занялся совсем другим, иначе и не узнал может никогда, что такой вариант непригоден.
Посему вопрос остается открытым: Чем правильно двигать спектр?
Диапазон может быть от 1КГц до 10ГГц, шаг сдвига нужен не более 1Гц, хорошо, если будет возможность работы с десятичными знаками.
FFT с блоком огромного размера, подстраивающееся под сигнал - это жесть :)
|
|
Дата: 03 Дек 2011 17:31:36
#
Умножаете сигнал на комплексную экспоненту и смотрите спектр. Чего не получается то?
|
|
Дата: 03 Дек 2011 17:44:17 · Поправил: Programmist (03 Дек 2011 18:17:21)
#
petr0v
Умножаете сигнал на комплексную экспоненту
А где эту экспоненту взять? Разложить синусоиду и сигнал прямым FFT, перемножить результаты real*real, image*image, потом обратное преобразование, и что в этом случае делать с частотами Найквиста?
Уж извините, если ступил чего, не могу понять, что здесь к чему.
|
|
Дата: 03 Дек 2011 18:15:27
#
Комплексная экспонента e^(j*2*pi*f*t), в нашем случае её дискретный вариант. Формулу Эйлера знаете? Как фазовый аккумулятор делать и синусы-косинусы из таблицы выбирать вроде недавно обсуждалось. Комплексные числа умножать умеете? Умножаете сигнал во временной области на комплексную синусоиду и смотрите спектр этого комплексного сигнала комплексным FFT, весь спектр, отрицательную часть тоже, как он двигается в зависимости от частоты. |
|
Дата: 03 Дек 2011 18:30:44
#
Programmist иначе и не узнал может никогда, что такой вариант непригоден. Да ладно, sea подскажет терь если чо. :-)
|
|
Дата: 03 Дек 2011 18:34:02
#
petr0v
Есть два массива: DataArray и SineArray, в одном сигнал, в другом, соответственно чистая синусоида, есть модуль FFT, функция exp(x) тоже есть, встроенная. Таблиц синусов-косинусов и фазового аккумулятора нет. Разве того что есть мало, надо еще и таблицы делать?
|
|
Дата: 03 Дек 2011 18:39:05
#
Mesh
Да может подскажут чего, пока единственное, что хорошо научился делать - это умножать каждый четный или нечетный элемент массива на -1 :)
|
|
Дата: 03 Дек 2011 18:39:21
#
Programmist Прошу прощения, что вмешиваюсь, но мне кажется что Ваша ошибка изначально заключалась в том, что вся обработка велась в частотном домене, может пока не поздно перейти во временную область, так будет проще. А спектр можно смотреть и так в каждой контрольной точке. ИМХО все это конечно. Удачи :)
|
|
Дата: 03 Дек 2011 18:44:23 · Поправил: Sinus (03 Дек 2011 19:03:13)
#
petr0v
Умножаете сигнал на комплексную экспоненту и смотрите спектр. Чего не получается то?
Прошу извинить, если не прав, но Programmist спрашивает нас, имхо, не об идее в общем её виде, а о конкретных формулах, которые напрямую, без доработки, можно было бы включить в код программы.
Могу о своих планах на этот счёт ещё раз сказать. Почти всё своб. время (к сожалению, его сейчас мало) как раз занимаюсь проверкой подходящих формул (а лучше сказать - проверкой своего понимания), т.к. не хотелось бы в спешке дать ошибочные ответы.
В данный момент проверка включает синтез простейших (для начала!) сигналов, имитирующих моно- и IQ- записи с частотой дискретизации 1.024 MГц; скоро, м.б. даже сегодня, если не отвлекаться на диалоги, выложу имитацию такой записи с АМ-модуляцией - чтобы знатоки, если сочтут это для себя интересным и не унизительным, проверили бы, то ли что надо получается у начинающего sdr-щика :). Если то, значит с пониманием у меня всё в порядке, и следующий шаг будет - проверка правильности сдвига спектра, вырезания более узкой полосы с соответствующим передискретом - то, что требуется в задаче, поставленной (перед начинающими sdr-щиками самоучками:) RadioKoteg-ом. Мне всё это ново и дико интересно, т.к. я узнал о возможности вав-записи радиочастотных сигналов совсем недавно (от Programmista и RadioKotega, и был так удивлён, что поначалу принял всё за шутку )))
И вот, когда я на 100% буду уверен, что во всём разобрался правильно, тогда постараюсь предельно подробно рассказать Programmistу, что надо включить в код программы. А может быть Programmist к тому времени уже сделает всё сам, или с Вашей помощью.
Чего не получается то?
Есть чему не получаться, если человек не привык к вычислениям в комплексной алгебре. Ведь IQ-файл это два массива. Код программы, вероятно, пишется как действия с вещественными числами. Комлексная экспонента это тоже два массива. Надо сообразить - что на что множить, с какими знаками складывать, какой знак частоты в экспоненте выбрать, нужно ли ввести в эту экспоненту подстраиваемую начальную фазу, как фильтровать результат и децимировать его, и как окончательный результат правильно представить опять в двух массивах IQ. И нужна ли вообще предварительная конверсия в моно-формат. Тут много мест, где можно ошибиться.
Кстати, у меня тоже есть вопрос к знатокам: верно ли, что I - это физич. огибающая, умноженная на косинус фазы комплексной огибающей, а Q - на синус? (т.е. I и Q - это дискретизованное то, что Баскаков называет A и B). Или наоборот, как вроде бы где-то говорилось на форумах?
|
|
Дата: 03 Дек 2011 18:45:12
#
Programmist Да подскажут, подскажут, тут имхо только и делают что подсказывают, если куратор темы sea будет веселится где нить в цирке, а если на форуме ему скучно може вобще куда свалит. :) Но вот главной подсказки вы как бы и не слышите, типо книжечку какую глянуть, для приличия что ли? :-) Имхо ессно.
|
|
Дата: 03 Дек 2011 18:52:24 · Поправил: Programmist (03 Дек 2011 19:12:42)
#
mikasa76
Да тут и обработки, собственно никакой нет, как оказалось кроме инверсии и красивой картинки ничего больше не работает.
Sinus
Код программы, вероятно, пишется как действия с вещественными числами.
Кода обработки нет. Все усилия были направленны на создание структуры программы, где все живет своей жизнью: Визуализация отдельно, модули обработки сигналов (массивов) - отдельно, просто в любой момент можно посмотреть, что в массиве. Точно так же вставлен модуль конвертера, который делал Mesh. Добавлять можно любые модули, в этом и есть главное достижение на сегодняшний день.
Пока займусь линейками, это тоже к обработке никакого отношения не имеет.
|
|
Дата: 03 Дек 2011 19:00:46
#
Programmist Ну тогда, как говорится, сам Бог велел :)
|
|
Дата: 03 Дек 2011 19:08:39 · Поправил: petr0v (03 Дек 2011 19:10:01)
#
Programmist
Есть два массива: DataArray и SineArray, в одном сигнал, в другом, соответственно чистая синусоида, есть модуль FFT, функция exp(x) тоже есть, встроенная. Таблиц синусов-косинусов и фазового аккумулятора нет. Разве того что есть мало, надо еще и таблицы делать?
Учитесь работать с комплексными числами как с обычными, во времена досовского паскаля это прямо в хелпе было расписано. Поблочная обработка по результату не должна отличаться от непрерывной отсчёт за отсчётом. Т. е. фаза синусоиды не должны рваться при переходе от блока к блоку. В SineArray должна содержаться комплексная синусоида, по формуле Эйлера вам надо вычислить от фазы не только действительную но и мнимую часть.
Sinus
I - реальная часть комплексного числа, Q - мнимая, все остальные сущности лишние.
|
|
Дата: 03 Дек 2011 19:11:49
#
petr0v, спасибо!
|
|
Дата: 03 Дек 2011 19:17:38
#
petr0v
Учитесь работать с комплексными числами как с обычными
Это можно, здесь просто мы говорим на разных языках, язык Матлаба отличается от Паскаля, который прочно засел у меня в голове, все дело в различном описании структур.
|
|
Дата: 03 Дек 2011 19:18:40
#
Programmist Да блин! Точно, там ж в этом модуле помему всё и есть для сдвижек, только надо вместо частного генератора который там в двух табличках вроде из четырёх чисел и который для случая f=Fd/4, влепить нормал генератор и всё.
|
|
Дата: 03 Дек 2011 19:26:42
#
Programmist
Давайте так что мы тут на математическом языке пытаемся говорить, а уж как там получить доступ к реальной и мнимой части структуры комплексного числа вы автоматически сами соображаете.
Не забываем что действительные числа это тоже комплексные у которых мнимая часть равна нулю.
|
|
Дата: 03 Дек 2011 19:28:14 · Поправил: Programmist (03 Дек 2011 19:36:23)
#
Mesh
в этом модуле помему всё и есть для сдвижек
Возможно, что есть, я сходу разобраться не смог, только подкрутил немного LPF и константу с амплитудой, короче теперь там сначала исходная максимальная меряется, потом, если она была велика, уменьшается, а после конвертера возвращается обратно. Не знаю, насколько стало лучше или хуже, но таким способом убрал глюк, связанный, с максимальной амплитудой в исходнике.
petr0v
Могу, например так представить комплексное число X:
X = Record;
Re: Double;
Im: Doube;
end;
Потом можно написать функции работы с ним, как с простым, или каждый раз выполнять все действия вручную, с каждой частью числа, тогда такой код будет работать быстрей.
|
|
Дата: 03 Дек 2011 19:34:14 · Поправил: Mesh (03 Дек 2011 19:43:10)
#
Programmist Не блин, эт я пургу спорол, там в модуле только половина того что нужно. Причём тут язык Матлаба отличается от Паскаля? Это чисто математика, кто и как на какой язык это будет переносить вобще вопросы другого сорту. У Полякова это расписано, у Тяжева, у Сергеенко, да в любой книжке по ЦОС эти сдвижки спектра есть. Книжек этих полно тут на сайте. Вы не пройдёте мимо книжек, мимо этого "напитку", вы отвернётесь сейчас, кто нить в рот положит, но судба будет подносить вам эту чашу снова и снова, пока вы её не выпьете. :-) Так мир устроен. Причём я не грю, что вы должны пилить гранит науки, эт дело совсем другое, но основы хоть какие-то нужны, чем Sinus и занимается собсно, но вот читаете вы его? Вникаете ли? А как без этого?. Ну или тогда это будет Васька номер -цать.
|
|
Дата: 03 Дек 2011 19:42:13
#
Mesh
Вы не пройдёте мимо книжек
Да, жалко только, что времени мало, хочется успеть еще и что-то сделать, ну а уж что получится или не получится, имхо не велика потеря :)
|
|
Дата: 03 Дек 2011 19:46:14 · Поправил: petr0v (03 Дек 2011 19:48:45)
#
Programmist
Могу, например так представить комплексное число X:
X = Record;
Re: Double;
Im: Doube;
end;
Потом можно написать функции работы с ним, как с простым, или каждый раз выполнять все действия вручную, с каждой частью числа, тогда такой код будет работать быстрей.
Да как угодно, но первый вариант вам будет полезнее чисто для понимания. И не валите всё в одну кучу, разбивайте в голове все ваши непонятки на отдельные части. Пробелы в математике это одно, перевод математики в паскаль это другое.
|
|
Дата: 03 Дек 2011 19:47:31
#
Programmist Да вам решать, велика потеря чи нет. :-) Да, жалко только, что времени мало Ткните пальцем у кого его много? :)
|
|
Дата: 03 Дек 2011 19:53:27
#
Programmist
Да, жалко только, что времени мало
Вы гораздо больше времени тратите впустую гоняя исходники туда-сюда. Квадратурный модулятор-демодулятор это такой ничтожный вопрос...
|
Реклама Google |
|