реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Как сдвинуть все элементы массива на 1, Оптимизация этого процесса
Николай Z
сообщение Jan 5 2008, 10:32
Сообщение #16


Местный
***

Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930



Цитата(dxp @ Jan 5 2008, 13:11) *
P.S. Можете и дальше (это уже второй случай) искать мои старые посты и пытаться меня вытащить на дискуссию, но сразу предупреждаю, этого вам не удастся. Меняйте тактику. wink.gif

Да не нужны Вы мне ни для какой дискусии - это просто попутное замечание по сути сказанного Вами... biggrin.gif
Не обольщайтесь...

Сообщение отредактировал Николай Z - Jan 5 2008, 10:36
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Jan 5 2008, 15:39
Сообщение #17


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(Николай Z @ Jan 5 2008, 13:32) *
Да не нужны Вы мне ни для какой дискусии - это просто попутное замечание по сути сказанного Вами... biggrin.gif
Не обольщайтесь...

[Грубый пост-новогодний OFF]
Уважаемый Николай Z! Вы хотя бы в раздел про ЦОС не лезьте. Для вас есть Off topics, резвитесь там! twak.gif


--------------------
شامل
Go to the top of the page
 
+Quote Post
fontp
сообщение Jan 6 2008, 13:15
Сообщение #18


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Если речь идёт о скользящем ДПФ для немногих гармоник, то можно использовать идею, лежащую в основе фильтрации скользящего среднего CIC фильтрами. А именно, целочисленное скользящее среднее величины X вычисляется рекуррентно как

S(n) = S(n-1) + X(n) - X(n-M), M длина блока усреднения

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

Далее для ДПФ заданной частоты - делаем два скользящих средних для целочисленных значений X(n)*sin(w*n) и X(n)*cos(w*n). Sin и Сos табличные и результаты умножений сохраняем в целочисленные линии задержки (лучше циклически адресуемые) для последующих рекуррентных вычислений. Получится скользящий ДПФ с точностью до комплексного фазового множителя (который при желании тоже можно учесть, но в большинстве случаев нас он не интересует, а интересует нас энергия) вычислительная сложность которого всего немногим более чем в 2 раза сложнее прямого блочного ДПФ или Герцеля. Это фатастика :-)
Кто с ними сталкивался, узнает в этом сразу типа DDC, используемый для вычислений точных значений отсчётов ДПФ
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jan 14 2008, 10:46
Сообщение #19


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(fontp @ Jan 6 2008, 16:15) *
S(n) = S(n-1) + X(n) - X(n-M), M длина блока усреднения

Я использую такой же алгоритм для вычислений типа текущей RMS, текущих действующих значений измеренных величин.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 14 2008, 11:14
Сообщение #20





Guests






Цитата(Николай Z @ Jan 5 2008, 11:32) *
Вы незаметили что у товарища вовсе не сдвиг по кольцу,
а вот что:
и после каждого сдвига и добавления вся последовательность изменяется.


Кольцевой буфер как раз дает требуемую функциональность.
Замените "принять" новый и "вытолкнуть" старый элемент на "перезаписать старый новым и сместить указатель на новый" и все станет вполне очевидным.
Go to the top of the page
 
+Quote Post
Николай Z
сообщение Jan 14 2008, 13:52
Сообщение #21


Местный
***

Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930



Цитата(TSerg @ Jan 14 2008, 14:14) *
Кольцевой буфер как раз дает требуемую функциональность.
Замените "принять" новый и "вытолкнуть" старый элемент на "перезаписать старый новым и сместить указатель на новый" и все станет вполне очевидным.

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

Сообщение отредактировал Николай Z - Jan 14 2008, 13:55
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th June 2025 - 21:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016