Перейти к содержанию
    

FFT и частотный коэффициент передачи

есть прямоугольный импульс который попадаеться на RC цепь с частотный коэффициент передачи k(jw) , нужно посмотреть что будет ны выходе

 

в книжке нашел, что для RC равен k(jw)=1/(1+j*w*tau), (w=омега)

 

FFT рабочее, проверял

так вот после fft имеем массив дейтвительных и мнимых частей коэффициентов.

далее, k(jw) умножаю на (1-j*w*tau) и получаю

k(jw)=1/(1+w*w*tau*tau)+j(-w*tau)/(1+w*w*tau*tau)

т.е. действительныю и мнимую чать k(jw), которые потом перемножаю с коэффициентами Фурье и делаю обратное преобразование.

 

Так вот всесто нужного пилообразного сигнала получаю совсем другое.

 

Где я ошибся? исходник нужен?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати насчет умножений.

Коэффициенты , они же все меньше 1.

Т.е. можно в типе short int поставить точку после 15 разряда

получим числа от -1 до ~1

Но для сишника они так и остануться -32768 +32767

 

Вообщем получается что то вроде этого

 

short int a,b,r;

long int c;

с = a*b;

r = c>>16;

 

a и b - множители , r - произведение

 

так вот , оптимально ли это по произодительности?

 

-----добавлено------

 

Сегодня пропарился с 16 битной целочисленной арифметикой

Получается не очень.

Или переполнения или слишком много шумов в спектре.

Можно конечно попробовать сдвигать точку вправо, на каждом шаге

 

Стоит ли вообще заморачиваться?

Реализуемо ли FFT в целых числах?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

> т.е. действительныю и мнимую чать k(jw), которые потом перемножаю

> с коэффициентами Фурье и делаю обратное преобразование.

 

А перемножение с комплексно-сопряжёнными коэффициентами делал?

 

Сегодня пропарился с 16 битной целочисленной арифметикой

Получается не очень.

Или переполнения или слишком много шумов в спектре.

Можно конечно попробовать сдвигать точку вправо, на каждом шаге

Стоит ли вообще заморачиваться?

Реализуемо ли FFT в целых числах?

 

Конечно реализуемо.

Коэффициенты-то конечно в диапазоне [-1; 1], но по ходу вычисления FFT происходит ещё и суммирование. Поэтому надо сигнал брать с запасом в log2(N) бит. 16 бит для сигнала в этом случае может оказаться мало. Если тема тебе ещё интересна, пиши, расскажу про некоторые ухищрения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2Eugeno:

 

идея "сдвигать точку вправо, на каждом шаге" удалась, алгоритм функционирует.

После некоторых оптимизаций удалось довести скорость FFT1024 до ~300 мс на проце msp430f161 с 3,6864МГц кварцем. Подсчет модуля считается столькоже , но я его почти неоптимизировал. Пока на этом остановился.

Сейчас переключился на разрюхивание TMS320v5509a

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

идея "сдвигать точку вправо, на каждом шаге" удалась, алгоритм функционирует.

В зависимости от необходимой точности можно уменьшить битность коэффициентов, что позволит ускорить fft раза в полтора.

 

А для 55-й серии должны быть готовые варианты fft.

Для c6x-серии есть оптимизированные версии от TI и для версии с пошаговым сдвигом, и без онного, и с упрощёнными коэффициентами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...