Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#1: 2012-05-15 08:08:05 ЛС | профиль | цитата
Чего-то не обнаружил всяких там StackEx.... (если плохо искал - прошу прощения)
Проще свой было сделать

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

Может кому сгодится.
При Count=1 отличается от Memory тем, что на onValue идут не новые данные, а старые.
карма: 9

11
файлы: 1memfifo.rar [1.2KB] [465]
Голосовали:Tad, Леонид, ser_davkin, sаmakacd, iarspider, foksov, Orikrimatolland, filyaxxxcom, andrestudio, Konst, sla8a
Ответов: 8926
Рейтинг: 823
#2: 2012-05-15 12:16:16 ЛС | профиль | цитата
Galkov, рад Вас видеть!
Спасибо за компонент, сколько раз применял сдвиг данных, но ни разу и на ум не приходило, что можно компонент сделать к тому же и обработка ускоряется code_27915.txt
карма: 19

0
файлы: 1code_27915.txt [3.4KB] [583]
Ответов: 9906
Рейтинг: 351
#3: 2012-05-15 13:31:20 ЛС | профиль | цитата
1) Аналогично
2) Леонид -- дык я точно знал, что тебе это понравится прежде всего
карма: 9

0
Ответов: 5446
Рейтинг: 323
#4: 2012-05-15 20:16:55 ЛС | профиль | цитата
Galkov, ещё во времена spb.ru выкладывал такой компонент, но у меня он не сохранился (с интервалом в пару дней накрылись системный и резервный диски), а онлайн-копия видать при переездах потерялась. Предлагаю на SVN добавить (если Galkov обязуется поддерживать компонент).
карма: 1

0
Ответов: 9906
Рейтинг: 351
#5: 2012-05-15 20:38:25 ЛС | профиль | цитата
iarspider, помню-помню

И название у него было StackEx, как сразу и отметил (на форуме это дает 404)
После этого (поиска) до меня дошло, что здесь DPElement будет очень в тему... а дальше -- дело техники. ((помнят ручки-то, оказывается ))

А про поддержку: так это моя Профессия, поддерживать все ранее собою же и разработанное. (Инженер, называется)
Эффективность в ней может достигаться только качеством разработки

Т.е., БЕЗ ПРОБЛЕМ
карма: 9

0
Ответов: 5446
Рейтинг: 323
#6: 2012-05-15 21:49:23 ЛС | профиль | цитата
Galkov, сейчас добавлю тогда. Кстати, а мой-то компонент не потерялся
ЗЫ. Поправь подпись :
32f65592-e244-4b11-b0a8-6157a0f173de.png
------------ Дoбавленo в 21.48:
Добавил. Galkov, с тебя статья в Wiki. С примером.
карма: 1

0
файлы: 132f65592-e244-4b11-b0a8-6157a0f173de.png [22.4KB] [1171]
Разработчик
Ответов: 26158
Рейтинг: 2127
#7: 2012-05-16 03:48:03 ЛС | профиль | цитата
Че-то я компонент на SVN не нашел, только добавлен в базу, а самих файлов тю-тю
карма: 22

0
Ответов: 5446
Рейтинг: 323
#8: 2012-05-16 03:58:51 ЛС | профиль | цитата
nesco, добавил. Какой-то сегодня день "не такой" (два раза не те файлы науч. руку отправлял)
карма: 1

0
Разработчик
Ответов: 26158
Рейтинг: 2127
#9: 2012-05-16 04:19:23 ЛС | профиль | цитата
iarspider, ну ты даешь стране угля -- умудрился записать элемент под существующим номерм в базу
карма: 22

0
Ответов: 5446
Рейтинг: 323
#10: 2012-05-16 07:07:29 ЛС | профиль | цитата
nesco, тьху ты! Я ж говорю - не день iarspider-а сегодня... Кстати, меня радует, что два элемента - Stack и SampleDelta - имеют одинаковое значение pos. Это либо при восстановлении SVN произошло, либо ещё до краха.
карма: 1

0
Разработчик
Ответов: 26158
Рейтинг: 2127
#11: 2012-05-16 07:20:41 ЛС | профиль | цитата
iarspider писал(а):
имеют одинаковое значение pos

Подправил
карма: 22

0
Ответов: 20
Рейтинг: 2
#12: 2012-07-11 00:02:36 ЛС | профиль | цитата
Сегодня столкнулся с такой задачей, в музыкальном калькуляторе величин транспорта решил сделать кнопку "Tap tempo", при нажатии на которую определялось бы количество ударов в минуту, относительно интервалов нажатия этой кнопки.

Для полноценной работы кнопки потребовался массив с очередью, наподобие:
1 значение пишется в первую ячейку, 2 значение сдвигает первое во вторую ячейку а себя пишет в первую,
3 значение сдвигает 1 и 2 во вторую и третью ячейку, последующие действуют так же по аналогии, только при сдвиге из 3 ячейки в 4ю, данные ячейки убиваются.

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

Если кому надо, а я так понимаю - этот топик по схожей тематике, то вот сам блок:

code_28446.txt

На вход подаете числовое значение, на выходе у меня правда идет значение (var1+var2+var3)/3, но, думаю подправить вывод не трудно будет или вывести значение массива в нижнюю точку

А если изменить условие memory.length < 3, то можно хранить больше ячеек
карма: 1

0
файлы: 1code_28446.txt [1.2KB] [493]
Ответов: 9906
Рейтинг: 351
#13: 2013-06-27 10:11:12 ЛС | профиль | цитата
Тут меня покритиковал один наш коллега в ЛС. Типа боевая асимптотика doValue равна O(n).
И я согласился, что дал себе "слабину" -- n все равно <=100.

В связи с этим, есть просьба к коллегам, которые используют этот элемент, протестировать апдейт

#pas
unit hiMemFifo;

interface

uses Kol,Share,Debug;

type
THIMemFifo = class(TDebug)
private
FData:array of TData;
offSet,highF:integer;
procedure SetCount(cnt:integer);
public
_event_onData:THI_Event;
_data_Data:THI_Event;
_prop_Default:TData;

procedure _work_doValue(var _Data:TData; Index:word);
procedure _work_doClear(var _Data:TData; Index:word);
procedure Value(var _Data:TData; Index:word);

property _prop_Count:integer write SetCount;
end;

implementation

procedure THIMemFifo.SetCount;
var i:integer;
begin
SetLength(FData,cnt);
highF := high(FData);
offSet := highF;
for i := 0 to highF do
FData[i] := _prop_Default;
end;

procedure THIMemFifo._work_doValue;
var dt:TData;
begin
if highF<0 then exit;
offSet := (offSet+highF)mod(highF+1);
dt := FData[offSet];
FData[offSet] := ReadData(_Data,_data_Data);
_hi_CreateEvent(_Data,@_event_onData,dt);
end;

procedure THIMemFifo._work_doClear;
begin
_prop_Count := highF+1;
end;

procedure THIMemFifo.Value;
begin
_Data := FData[(Index+offSet)mod(highF+1)];
end;

end.
Функционирование измениться не должно. Вообще никак (разве что быстродействие в лучшую сторону).
Коль скоро замечаний не случится (на что я рассчитываю), попросим nesco сделать комит.
карма: 9

1
Голосовали:ser_davkin
Ответов: 8926
Рейтинг: 823
#14: 2013-06-27 11:44:15 ЛС | профиль | цитата
Galkov, работает без изменений, на быстроту ещё не проверял
(При работе со звуком я, чтобы не переписывать с каждым шагом весь массив длиной N, делаю его длину в два раза длиннее и записываю за шаг два значения:
#pas
Array[i]:=Val;
Array[i+N]:=Val;
i:=i-1;
if i<0 then i:=N-1;
и получается что всегда от индекса [i] до [i+N] записаны последние N данных.)
карма: 19

0
Ответов: 9906
Рейтинг: 351
#15: 2013-06-27 21:50:06 ЛС | профиль | цитата
Да, есть такая техника. Если очень нужно, чтобы приемник данных имел право рассчитывать на "линейный" пакет данных.
К счастью - для элемента это не надо
А на работе, в микроконтроллере - это каналы DMA...

карма: 9

0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)