|
|
 |
Ответов
|
Jan 28 2009, 21:10
|
Частый гость
 
Группа: Участник
Сообщений: 95
Регистрация: 22-01-09
Пользователь №: 43 819

|
Цитата(SasaVitebsk @ Jan 28 2009, 22:24)  Так что не удивительно, что на дешёвом RISK ядре это сделать не удаётся. У человека, похоже, особый случай. Ему обработка в реальном масштабе времени просто не нужна. Поэтому есть возможность записать данные за отрезок времени (не знаю сколько секунда - две - три или всего несколько отсчетов) и потом реализовывать анализ сохраненных данных. В этом случае применение фильтров попросту не оправдано. Можно обойтись более дешевыми и медленными методами. Но самое важное при этом - найти способ увести все вычисления в область челочисленной математики. Иначе действительно ядра AVR попросту не хватит. Сергей.
|
|
|
|
|
Jan 28 2009, 22:53
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Мои советы: 1) Если есть возможность, не заморачиваться с float-арифметикой. Особенно, если исходные данные у вас целые (например, измерения АЦП), вам нужна лишь оценка частотного спектра и вы не собираетесь делать ему обратное FFT-преобразование. В этом случае лучше всего создать ЦЕЛОЧИСЛЕННУЮ таблицу синусов, содержащую столько же ячеек, сколько и в буфере данных, которые будут подвергнуты преобразованию (то и другое - массивы, кратные целой степени двойки: 64, 128, 256, 1024, 2048 и т.д.). Однйо этой таблицы достаточно, чтобы все значения синусов и синусов, необходмые для вычислений, можно было выбрать из нее. Для большинства целей бывает достаточно массива синусов с ячейкой типа char (1 байт). При этом синус нормируется на величину +-128 (signed char). Поскольку максимальные пределы синуса лежат в интервале от -1 до +1, то достаточно значение синуса для угла i*360/n градусов (где i-номер элемента массива) умножить на 128, а затем округлить до БЛИЖАЙШЕГО целого. Эту таблицу прошить во flash, чтобы не тратить под нее оперативку. Есть вариаты нормировать на 2^15 = 32768, т.е. на MAX_INT, используя массив типа int. Тут точность получится совсем хорошая, но дольше станет умножение. Однако даже этот вариант летает со свистом по сравнению с умножением во float-числах. Теоретически таблицу можно сделать в четверо короче, используя симметрию функции синуса, но тогда станет несколько сложнее алгоритм выборки. 2) Заранее решить, нужна ли вам реальная (косинусная) и мнимая (синусная) части разложения, или вам, как большинству электронщиков, нужно только значение мощности (корень из суммы квадратов дествительной и мнимой амплитуд). Если это так, то существует алгоритм FFT-преобразования, который сразу дает мощность. В противном случае вам придется n-раз исчислять корень квадратный, что неприятно.
Сообщение отредактировал Xenia - Jan 28 2009, 22:56
|
|
|
|
Сообщений в этой теме
AnisimovSlava AtMega, спектральный анализ Jan 28 2009, 10:24 Artem_Petrik Зачем же сразу "абсурдом"? Если время не... Jan 28 2009, 10:52 ssvSerge Цитата(AnisimovSlava @ Jan 28 2009, 14:24... Jan 28 2009, 17:42 rx3apf Цитата(AnisimovSlava @ Jan 28 2009, 13:24... Jan 28 2009, 19:12  AnisimovSlava Цитата(ssvSerge @ Jan 29 2009, 01:10) У ч... Jan 29 2009, 12:29 VAHOO по моему надо сначало в MATLAB е попробовать а пот... Jan 28 2009, 19:31 Rst7 ЦитатаЕсли это так, то существует алгоритм FFT-пре... Jan 29 2009, 01:49 ARV внесу свой голос в общий гомон
в AVR даже достато... Jan 29 2009, 05:37 AlexU Из практики. На ATMega8 делал расходомер, на входе... Jan 29 2009, 06:30 Rst7 ЦитатаНадо производить спектральный анализ в диапа... Jan 29 2009, 13:00 GDI ЦитатаЛибо я чего-либо не догоняю, либо метод прос... Jan 29 2009, 13:35 ssvSerge Цитата(GDI @ Jan 29 2009, 16:35) То что о... Jan 29 2009, 14:40  GDI Цитата(ssvSerge @ Jan 29 2009, 17:40) Мод... Jan 30 2009, 07:34 SasaVitebsk Пробовал таким способом реализовывать DTMF декодир... Jan 29 2009, 18:41 _Pasha Цитата(SasaVitebsk @ Jan 29 2009, 22:41) ... Jan 30 2009, 08:00  AnisimovSlava Рассказываю.
Испытали метод ssvSerge. Вначале в E... Jan 30 2009, 11:46   _Pasha Цитата(AnisimovSlava @ Jan 30 2009, 14:46... Jan 30 2009, 12:16   ssvSerge Цитата(AnisimovSlava @ Jan 30 2009, 14:46... Jan 30 2009, 14:22    AnisimovSlava Несколько дней пробовал разобраться в быстром прео... Feb 1 2009, 23:05     ARV Цитата(AnisimovSlava @ Feb 2 2009, 02:05)... Feb 2 2009, 06:44      ASZ Цитата(ARV @ Feb 2 2009, 09:44) нескольки... Feb 7 2009, 06:06       Dx! Цитата(ASZ @ Feb 7 2009, 09:06) Если не с... Feb 7 2009, 20:17        ASZ Цитата(Dx! @ Feb 8 2009, 00:17) Тести... Feb 8 2009, 04:28 Aleksandr Baranov Не забудьте и окно в flash-memory в таблицу записа... Jan 29 2009, 18:50 Allregia Цитата(AnisimovSlava @ Jan 28 2009, 13:24... Jan 30 2009, 12:33 Rst7 ЦитатаНесколько дней пробовал разобраться в быстро... Feb 2 2009, 07:27 Dx! А что мешает попробовать и оценить точность? Можно... Feb 8 2009, 18:36 verden Делал DTMF кодер - декодер (Метод Герцеля) все зав... Feb 16 2009, 09:43
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|