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


Hytera TC-320
руб.

Hytera TC-508
руб.

Hytera TC-580
руб.

Hytera PD-355
руб.

Hytera X1E
руб.
 Страница:  ««  1  2  3  4  5  6  7  ...  33  34  35  »»Поиск в теме
Автор Сообщение
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 06 Дек 2011 23:13:28 · Поправил: Mesh (06 Дек 2011 23:14:22) #  

Programmist Я немного недогнал, А 4-я станция - это какой-то глюк, щас буду разбираться.
Ничего страшного, имхо это уже мелочи.
то бишь вы считаете, что это сигналик такой реал с четырьмя станциями? Невзирая на то что в SA их три, а четыре в Куле+? То есть это не косяк Кула+, а косяк SA? Я правильно понимаю идею, чи нет? Оно то может быть, но хотел б какие обоснования услышать, чи увидеть.
RadioKoteg
Участник
Offline4.4
с сен 2006
Киев
Сообщений: 14486

Дата: 06 Дек 2011 23:22:58 #  

При переходе к IQ частота 256

извините ,забыл разделить на два. :-)

Про Китай 200,000 кГц
В Петербурге 6 часов на 258,000 кГц
Московское время 10 часов на 500,000 кГц
Реклама
Google
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 06 Дек 2011 23:37:24 · Поправил: Programmist (06 Дек 2011 23:42:24) #  

Mesh
То есть это не косяк Кула+, а косяк SA?
Скорее всего, это косяк конвертера, я его не проверял, а подключил так, как он был. Откуда у меня обоснования, когда сравнить больше не с чем. Хорошо, что хоть сейчас сигнал и скрин из SA есть.
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 06 Дек 2011 23:49:09 · Поправил: Mesh (06 Дек 2011 23:55:19) #  

Programmist Дык конвертер то мой. Он реал даёт четыре сигналика, уже прочекил. Но блин, я ж грил, что когда в SA сделали свой, то я был в расстройстве, что-то у меня не совсем гламурно получилось и медленей и с качеством чего-то не то, и я забросил это. Оно то работало, но вот реал на 100 правильно чи нет я добивать не стал, огорчился так сказать, а уж сейчас и подавно ничего не помню. Скоре всего там косяк какой, и так думкаю с фильтрами, бо похоже сильно на то что нет балансу, где-то нарушается. Четвёртый сигналик как-то выглядит недодавленой половиной, но реал я хз, эт думки. Есь конечно вариант, что у меня правильно работает, а в SA неправильно, но я хз, верится с трудом, уж давно б косяки повылазили, не один i/q через SA провёрнут и не тока мной, чёт я не помню что б меня чего смущало сильно, вот ж блин прикольно как.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 06 Дек 2011 23:58:10 #  

Mesh
Тут без косяков не бывает, тем более, когда проверить нечем. Вот и дошли, наконец, общими усилиями до какой-то цели, если Sinus с формулой не ошибся, все будет просто замечательно. Скорость работы FFT гораздо выше, чем того LPF, ну а о качестве можно не беспокоиться.
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 07 Дек 2011 00:08:14 · Поправил: Mesh (07 Дек 2011 00:10:23) #  

Programmist Ага вы хотите сказать, что если он ошибся, то так ловко, что в SA типо кажет ошибочный файл неправильно но так как он хотел, а у меня типо, где я точно гарантий дать не могу потому как и не помню вобще чего там и как, типо кажет то что есть? :) Это оченно мифические шансы что у меня правильно, скорее наоборот у меня чёто не так, но будет кино, если всё в обратке будет, но я в это не верю на 100, на 0.001% допускаю, но тогда Sinus просто бог чекитов, сходу такой сигналик сварганить.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 07 Дек 2011 00:15:32 #  

Mesh
Вот и хз, где правильно, мне так вообще "шестое чуйство" подсказало, что надо на FFT делать, да и в SA, скорей всего на нем сделано, наверно и там люди не за пять минут к верному решению пришли :)
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 07 Дек 2011 00:21:20 · Поправил: Mesh (07 Дек 2011 00:25:05) #  

Programmist Дык и я щас в думках глыбоких, чё там вобще ЛПФ у меня делает?! Чё я там фильтровал такого? Кино и только.

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

Дата: 07 Дек 2011 00:34:39 #  

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

Дата: 07 Дек 2011 02:53:16 · Поправил: Sinus (07 Дек 2011 12:04:36) #  

Mesh, Programmist, всё вы верно выяснили - на частоте 12 кГц появляется "зеркалка" от сигнала 500 кГц после конвертации IQ --> Real-моно упомянутым вами конвертором.

Ф-лы обратного преобразования IQ --> Real-моно (тоже в частотном домене, через голое FFT) я уже вывел и на этом же сигнале с 3-мя станциями проверил: работают как в аптеке, никаких лишних сигналов не образуется! (Извиняйте, щас вынужден спать залечь, завтра вечером напишу ф-лы здесь, и графики представлю, если надо).

Короче, этот метод вроде вполне работоспособен. Да, паразитные "палки" в спектрах появляются, но - величиной примерно 10-4 от полезных амплитуд. Думаю, это из-за 16-битного квантования в процессе формирования вав-файлов; в точных "математических" массивах не вижу лишних палок и шумов заметной величины.

Теперь буду осваивать КИХ-фильтрацию, и тогда посмотрим, насколько она предпочтительнее.
Спасибо ещё раз всем за проверку, обсуждение и советы.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 07 Дек 2011 05:23:21 · Поправил: Programmist (07 Дек 2011 06:06:44) #  

Sinus
паразитные "палки" в спектрах появляются, но - величиной примерно 10-4 от полезных амплитуд.
Это могут быть "амплитудные грабли", много раз на них наступал. Диапазон 16-ти бит -32768..32767.
Палки появляются при умножении -32768 на -1. Проблема не решена, поэтому и хочу уйти на внутренний формат с плавающей точкой.
Насчет зеркалки - интересное кино, в конвертере никаких ошибок не видно, LPF тот тысячу раз проверен, если есть ошибка, тогда у меня вообще концы с концами не сходятся. Действительно, проще сделать все заново, чем понять, откуда такой глюк, но как-то странно все это. Буду разбираться, на свежую голову.

ф-лы здесь, и графики представлю, если надо
До сих пор не верится, что так просто все решилось!
Наверно, это от попытки постичь сию науку, в том виде, как она описана в томах с многоэтажными формулами...
Теперь даже страшно брать перо, а вдруг оно и правда заработает :)
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 07 Дек 2011 12:08:53 #  

Sinus Ага, ну и класно, собсно так и думал, что косяк скорее в конвертере моём чем где ещё, так оно на то и выходило ещё много лет назад. :) Programmist Палки появляются да вобще 10-4 эт на уровне -80 дб, какие это нахрен палки?! Эт так мона сказать естественые шумы квантования, так что и морочится особо незачем.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 07 Дек 2011 14:07:21 · Поправил: Programmist (07 Дек 2011 21:31:44) #  

Sinus
Что-то я не могу сообразить никак, что куда. Пятый раз пробую, получается все что угодно, кроме того, что надо.

Имею исходную болванку: Для конвертера Real to I/Q

AudioArray16 - Входной массив реальных данных, размером 1024 элемента.
AudioArrayA - ВЫходной массив реальных данных, размером 1024 элемента. Нужно 512 элементов
AudioArrayB - ВЫходной массив реальных данных, размером 1024 элемента. Нужно 512 элементов

ComplexArray1 - массив комплексных чисел, размером 1024*2 элемента.
ComplexArray2 - массив комплексных чисел, размером 1024*2 элемента. Размер?
ComplexArray3 - массив комплексных чисел, размером 1024*2 элемента. Размер?

FFTSize - число = 1024 (размер массивов)

Заполняю комплексный массив реальными данными:

for k:= 0 to FFTSize-1 do
begin
ComplexArray1[k].Re:= AudioArray16[k]; //Data
ComplexArray1[k].Im:= 0; //заполняю нулями
end;

FFT(ComplexArray1, FFTSize); //Прямое преобразование

Переназначение массивов: здесь не смог правильно разложить данные

for k:= 0 to FFTSize-1 do
begin
ComplexArray2[k].Re:= ComplexArray1[k].Re;
ComplexArray2[k].Im:= ComplexArray1[k].Im;

ComplexArray3[k].Re:= ComplexArray1[k].Re;
ComplexArray3[k].Im:= ComplexArray1[k].Im;
end;

IFFT(ComplexArray2, FFTSize); //Обратное преобразование с размером FFTSize?
IFFT(ComplexArray3, FFTSize); //Обратное преобразование с размером FFTSize?

Теперь получаю 2 ВЫходных массива, абсолютно одинаковых и идентичных входному.
здесь, по всем правилам, их размер должен быть в 2 раза меньше т.е. 512

for k:= 0 to FFTSize-1 do
begin
AudioArrayA[k]:= Round(ComplexArray2[k].Re); //с округлением до целого
AudioArrayB[k]:= Round(ComplexArray3[k].Re); //с округлением до целого
end;

Если не сложно, можно дописать в переназначение массивов то, что не хватает. С моно-стерео на выходе, я уж сам как-нибудь :)
Теперь то, что пока к делу отношения не имеет. (убрал в текстовый файл)
http://www.radioscanner.ru/uploader/2011/fft174859.txt

Вообще, сейчас в программе используется два модуля FFT. Один "быстрый" 32-x битный, на asm-e, второй 64-х битный и более медленный, но позволяющий задать блок большого размера. Оба модуля комплексные и идентичны по входным - выходным параметрам, только в одном из них, вторая половинка Imag-a идет с обратным знаком. Исправлять не стал, потому, что не знаю, как правильно.

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

з.ы.
Sinus
В формуле: A(k) = Re(Z(k+c) + Z(c-k)) + i*Im(Z(k+c) - Z(c-k)) не могу понять, что такое i.

После очередной неудачной попытки вставить формулу, решил, что на словах все объяснить и понять, что куда попадает, будет сложно, поэтому собрал простейшую демо - программу, с живым модулем FFT из основной программы, который и является основой всего:
http://www.radioscanner.ru/uploader/2011/ffttable01.rar
Там в текстовом виде, можно залить входные массивы нулями или случайным числом 0-255 (имитация 8 бит wav). Есть опция Reorder, как у прямого, так и у обратного преобразования, но я ее никогда не использую (всегда включена). Сама формула должна быть в модуле MainUnit.pas. Блок выбран небольшой, 32 значения, имхо этого вполне достаточно.
Вот, где-то так оно и есть, одно прямое и два обратных преобразования.
А главное, что не покидает мысль о том, что этот модуль и "заточен" для работы с комплексным сигналом, где можно сразу залить один канал в Real, другой в Image и получить каким-то хитрым способом сразу реальный сигнал, одним преобразованием.

Все это совсем не к спеху, потому, как только начинает укладываться в голове, какие возможности открываются, при обработке сигнала, разложенного в I/Q и на это нужно время. Что касаемо звука, так это просто фантастика, за одно и офтоп :)
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 07 Дек 2011 22:39:30 · Поправил: Sinus (07 Дек 2011 22:41:43) #  

Конверсия IQ-->Real в частотной области (обозначения те же, что были выше для конверсии Real-->IQ):

Считываем из двух каналов вав-файла вещественные массивы A(t) и B(t). Их длина есть N(ВЧ)/2.
Прямое FFT(A) и FFT(B) даёт два комплексных массива A(k) и B(k).
Здесь k = 0,1, ... c, где c = N(ВЧ)/4.

Вычисляем вдвое более длинный комплексный массив Z(k) по формулам:

для k = 0,1, ... , c-1:
Z(k) = (1/2)*[ Re(A(c-k)) - i*Im(A(c-k)) + i*Re(B(c-k)) + Im(B(c-k)) ].

для k = c, c+1, ... , N(ВЧ)/2:
Z(k) = (1/2)*[ A(k-c) + i*B(k-c) ].

Тогда обратное Фурье-пр-е, IFFT(Z), даёт вещественный массив S(t). Он ещё вдвое более длинный, т.е. число элементов в нём равно N(ВЧ). Записываем его в 1-канальный вав-файл с частотой дискретизации Fdiscr(ВЧ), вдвое большей, чем была в IQ-файле. Вот и всё.
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 07 Дек 2011 22:45:48 · Поправил: Programmist (07 Дек 2011 22:49:38) #  

Sinus
Буковкой "i", то что за значение обозначено?
А то я тут уже пошел на метод "тыка", вырезал из сигнала бегемота в кресле, сделал из него стерео и разворачиваю, который час, пока в нужную сторону не попадет :)
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

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

Programmist, думаю, не надо рассматривать конверсию в частотной области как окончательный рецепт. Давайте прислушаемся к опыту petr0vа и mikasa76, одумаемся, пока не поздно - они дело говорят. ))

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

А тупик тут виден. Ведь FFT целиком над всем сигналом S(t), да ещё чтобы число отсчётов было 2 в целой степени - это очень связывающие условия; тем более жёсткие, чем длиннее сигнал. Хорошая прога должна быть от них свободна. Вот именно обработка во временной области, отсчёт за отсчётом, как нам уже советовали, снимет эти искусственные ограничения.

О Ваших модулях FFT, IFFT - надо сначала разобраться, что они выдают, а иначе я не знаю, как ими распорядиться в формулах.

В маткаде всё проще: команда Z:=FFT(S) автоматически создаёт массив комплексных чиcел Z(k), вдвое более короткий, чем входной вещественный массив S(t). А у Вас, если я верно понял, функция FFT(ComplexArray1, FFTSize) возвращает результат в ту же матрицу ComplexArray1, в одном из двух столбцов которой был входной вещественный массив, причём длина массивов задаётся независимо числом FFTSize.

Тогда надо выяснить, что она возвращает. Хорошо, если пол-массива будут амплитуды Z(k), а остальная половина - комплексно-сопряжённые амплитуды. Сделайте, плз, такой тест: в качестве исходного реального массива возьмите простую последовательность чисел 0, 1, 2, ..., 1023.

AudioArray16[k] := k

И после вызова FFT(ComplexArray1, FFTSize) распечатайте в два txt-файла получившиеся два массива, т.е. поотдельности ComplexArray1[k].Re и ComplexArray1[k].Im. И пришлите их сюда посмотреть. Сравним с тем, что получается у меня, и узнаем, что ваш модуль выдаёт после номера 513.

зы. буква i в формулах комплексной алгебры всегда означает мнимую единицу, так же как и в формуле Эйлера. Знать правила комплексной алгебры в нашем деле необходимо. Формулы, которые я приводил, это - просто-напросто процедуры комплексного сопряжения, и изменения номеров у фурье-амплитуд.

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

Дата: 07 Дек 2011 23:04:48 #  

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

Дата: 07 Дек 2011 23:07:37 · Поправил: Programmist (08 Дек 2011 00:11:42) #  

Sinus
возьмите простую последовательность чисел 0, 1, 2, ..., 1023.
В исходный Image залил нули, в Real 0..1023 результат FFT: см. ниже
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 07 Дек 2011 23:16:28 · Поправил: Sinus (07 Дек 2011 23:19:16) #  

Programmist, чё-то результат мне абсолютно не понятен. Сделайте, плз, ещё наоборот - нули в Re, подряд числа в Im. И я должен какое-то время подумать, и м.б. пришлю вам тхт-файл с отсчётами чистого синуса - надо посмотреть, что выйдет на чистой синусоиде.

Mesh, дык вот, будем коллективно подначивать Programmista к учёбе. Чё-то я уже не понимаю, как с таким FFT вообще картинки-то получались....
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 07 Дек 2011 23:21:25 · Поправил: Programmist (08 Дек 2011 00:12:11) #  

Sinus
Чё-то я уже не понимаю, как с таким FFT вообще картинки-то получались....
Это FFT - то FFT, что доктор прописал :) и картинки с ним качества отменного, просто есть некоторые отличия от модуля в Матлабе.
А насчет спать спокойно, так это чисто моя затея и просто так не сдамся :)

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

Дата: 07 Дек 2011 23:29:09 #  

Programmist, вроде начинает до меня доходить, м.б. и нормально работает у вас, только не пойму, почему все числа целые. Пошёл подумать и поразглядывать...
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 07 Дек 2011 23:31:09 · Поправил: Mesh (07 Дек 2011 23:31:34) #  

Sinus К стати, к стати опять ж истины ради токмо. :) МетОда sample by sample так ж как и метода all samples one moment это две крайности так сказать, два слона на коих держится ЦОС, практикал истина где-то посерёдке. :-) В разных задачах эта истина смещается туды или сюды, ну эт тож в книжках не скрывают, но так как бы уточнить. :)

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

Дата: 07 Дек 2011 23:32:16 · Поправил: Programmist (07 Дек 2011 23:39:59) #  

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

Дата: 07 Дек 2011 23:40:07 · Поправил: Sinus (07 Дек 2011 23:57:24) #  

Programmist, плз, повторите без Round первый вариант (да, с нумерацией строк - хорошо), и я отойду думать, чё с ними делать. Вся игра-то у меня была на разной длине массивов, а тут надо неспеша подумать...

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

зы. зы. Да, а вот ещё нюансик - в моём сигнале с 3-мя якобы АМ-станциями несущая бралась как косинус со сдвигом фазы. На частоте F1 сдвиг = 0, на частоте F2 сдвиг = пи/2, на частоте F3 сдвиг = пи/3, если правильно запомнил. Чё-то никто этого сугубо "квадратурного" факта не упомянул.... :)

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

Дата: 07 Дек 2011 23:40:58 #  

Programmist Да причём тут SA? Книг наваяно авторами ну уж просто море разливаное, даж искать не надо, тут на ресурсе собрано колекция целая. Да лана, всему своё время имхо. :)
Mesh
Участник
Offline4.0
с мая 2006
Сообщений: 6169

Дата: 07 Дек 2011 23:57:06 #  

Sinus Чё-то никто этого сугубо "квадратурного" факта не упомянул.... :) Ого! А надо было упомянуть? :-) Ну може Programmist напишет софтину где это будет упоминатся, и покажет практикал ценность этого на реал сигналиках. Тут как бы эта, синтез синтезом, реал задачи реал задачами. Все эти пи/n рулят в ОФДМ ну дык там оно сам бог велел, а тут, АМ и АМ чего с неё взять то больше, и зачем?
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 07 Дек 2011 23:58:48 #  

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

Дата: 07 Дек 2011 23:59:46 · Поправил: Programmist (08 Дек 2011 00:07:07) #  

Sinus
Вот так вернее будет: http://www.radioscanner.ru/uploader/2011/fftreim.txt
Там 3 варианта, разделитель - табуляторы. Старые файлы удалю.
Все надо проверять, абсолютно согласен. И именно в текстовом виде, когда это возможно, иначе не спасут ни книги, ни опыт предыдущих поколений :)
Sinus
Участник
Offline3.0
с авг 2010
Санкт-Петербург
Сообщений: 1055

Дата: 08 Дек 2011 00:03:20 #  

Programmist, спасибо. Ну, пойду кумекать, а то в режиме он-лайн не сосредоточиться....
Programmist
Участник
Offline4.0
с ноя 2008
Москва
Сообщений: 3826

Дата: 08 Дек 2011 00:08:36 · Поправил: Programmist (08 Дек 2011 18:15:13) #  

Sinus
Точно, а я пойду спать, на сегодня уже накрутился :) Доброй Всем ночи!

з.ы.
В конце концов, у меня есть еще один путь, это заменить в конвертере LPF на свой новоиспеченный фильтр, а в процессе замены сделать и обратную операцию R2I/Q. Делать двухсторонний конвертер все равно придется, любым способом и в реальном времени. Уж очень заманчива перспектива работы со звуком, имхо тут есть ответ на некоторые нерешенные вопросы.

з.ы.
А у Вас, если я верно понял, функция FFT(ComplexArray1, FFTSize) возвращает результат в ту же матрицу
Это в целях повышения скорости работы, можно их разделить, но не желательно, реально это даже не матрица, а указатель на область памяти. Модуль еще требует доработки, и эта матрица будет динамической, сейчас ее размер взят с запасом. FFTSize это некая точка остановки обработки и возврат к началу, да это особого значения не имеет. Массивы (матрицы) маленькие и для памяти современных машин ничего не значат, а вот разделение (удвоение) ее на входную и выходную может заметно снизить скорость.
Вот с буквой "i" пока не понял, у меня таких переменных быть не может, это обязательно должно быть каким-то реальным числом. В Паскале вся математика предельно проста.

FFT целиком над всем сигналом S(t), да ещё чтобы число отсчётов было 2 в целой степени - это очень связывающие условия
Проблема актуальна для фильтров и решается окнами с перекрытием. Склеить куски не всегда легко, но это работает, недостающие части дополняются нулями, можно взять FFT 65536 с сигнала в три отсчета и результат будет верный. Там, где окна не нужны, вообще не вижу никаких проблем.
Падение точности расчетов, при работе с огромными числами - неприятный момент, но на практике такое встретить не реально. Все форматы - максимум 24 бита целое число. 32 бита - число до единицы (включительно).

з.ы...
И опять к комплексному модулю. Там получается реально 2 рабочих канала за один цикл, только надо понять, что в каком порядке попадает в частотную область в таком режиме. Удвоение скорости, имхо это очень важно.

з.ы.^N
А пока прога не идет, собрал калькулятор, зачем - не знаю, но пусть будет, может быть, когда на что сгодится :)
В нем использовано оба модуля (опция FFT64), один из модулей страдает "зеркальной болезнью", какой не понятно. Данные можно загрузить из текстового файла и править руками в левом окне.


Увеличить

Сама программа и исходники здесь: http://www.radioscanner.ru/uploader/2011/fftcalc.rar
Сразу видны все неточности в операциях с плавающей точкой :(
Реклама
Google
 Страница:  ««  1  2  3  4  5  6  7  ...  33  34  35  »» 

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