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

 
 
> Как сдвинуть все элементы массива на 1, Оптимизация этого процесса
azh
сообщение Dec 21 2007, 11:31
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 17-05-07
Пользователь №: 27 781



Здравствуйте!

Кто-нибудь знает как можно оптимизировать сдвиг элементов массива на 1 (для Blackfin):
-------------------------------------------------------------------
void AddSample(short pBuffer[], short sValue, int nSize)
{
int i;
for (i = 1; i < nSize; i++)
{
pBuffer[nSize - i] = pBuffer[nSize - i - 1];
}
pBuffer[0] = sValue;
}
--------------------------------------------------------------------
Как-нибудь можно для этого использовать кольцевые буфферы или DMA память-память?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Dec 21 2007, 22:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А зачем вообще нужно сдвигать буфер? Почему нельзя его оставить как есть и для извлечения значений буфера ограничится всего лишь вызовом подобной функции?
Код
short GetBufVal(short *pBuffer, unsigned idx, unsigned nSize)
{ if (idx<nSize) return(*(short *)(pBuffer+idx));
  else return(*(short *)(pBuffer+(nSize-idx)));
}
Go to the top of the page
 
+Quote Post
shasik
сообщение Dec 22 2007, 06:20
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



Цитата(rezident @ Dec 22 2007, 00:37) *
А зачем вообще нужно сдвигать буфер? Почему нельзя его оставить как есть и для извлечения значений буфера ограничится всего лишь вызовом подобной функции?
Код
short GetBufVal(short *pBuffer, unsigned idx, unsigned nSize)
{ if (idx<nSize) return(*(short *)(pBuffer+idx));
  else return(*(short *)(pBuffer+(nSize-idx)));
}


Абсолютно согласен. Использовать "навороченные" программы для данной задачи явно лишнее. Лучше работать с указателями. Пусть N - длина массива, begin - его начало, тогда элемент будем брать по адресу (i+begin) mod N, т.е. то же что предложил rezident. Просто если длина массива является степенью двойки, то алгоритм rezident'а можно оптимизировать - использовать операцию логического &. Все работает шустро и очень даже красиво. Думаю понятно, что в этом случае сдвиг масиива на k элементов выглядит как begin += k.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- azh   Как сдвинуть все элементы массива на 1   Dec 21 2007, 11:31
- - rezident   А может проще ничего не двигать, а лишь модифициро...   Dec 21 2007, 11:45
- - dxp   Цитата(azh @ Dec 21 2007, 17:31) Кто-нибу...   Dec 21 2007, 11:57
|- - fontp   Цитата(dxp @ Dec 21 2007, 14:57) В этом п...   Dec 21 2007, 12:06
- - dtsar   Цитата(azh @ Dec 21 2007, 14:31) Здравств...   Dec 21 2007, 18:16
|- - azh   Спасибо за ответы! В help к VDSP++ написано, ...   Dec 21 2007, 18:40
|- - fontp   Цитата(azh @ Dec 21 2007, 21:40) Спасибо ...   Dec 22 2007, 10:26
- - azh   На самом деле, сдвиг всех элементов массива это то...   Dec 22 2007, 11:19
|- - fontp   Цитата(azh @ Dec 22 2007, 14:19) На самом...   Dec 22 2007, 12:52
- - azh   Большое спасибо за разъяснения! Действительно,...   Dec 22 2007, 13:58
- - vadkudr   Осталось добавить, что ДПФ сдвинутой по кольцу пос...   Jan 5 2008, 04:48
|- - Николай Z   Цитата(dxp @ Dec 21 2007, 14:57) Не увере...   Jan 5 2008, 08:32
|- - dxp   Цитата(Николай Z @ Jan 5 2008, 14:32) Вы ...   Jan 5 2008, 10:11
||- - Николай Z   Цитата(dxp @ Jan 5 2008, 13:11) P.S. Може...   Jan 5 2008, 10:32
||- - Edmundo   Цитата(Николай Z @ Jan 5 2008, 13:32) Да ...   Jan 5 2008, 15:39
|- - TSerg   Цитата(Николай Z @ Jan 5 2008, 11:32) Вы ...   Jan 14 2008, 11:14
|- - Николай Z   Цитата(TSerg @ Jan 14 2008, 14:14) Кольце...   Jan 14 2008, 13:52
- - fontp   Если речь идёт о скользящем ДПФ для немногих гармо...   Jan 6 2008, 13:15
- - alexander55   Цитата(fontp @ Jan 6 2008, 16:15) S(n) = ...   Jan 14 2008, 10:46


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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 18:29
Рейтинг@Mail.ru


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