Вверх ↑
Ответов: 773
Рейтинг: 168
#1: 2024-10-18 04:12:16 ЛС | профиль | цитата
RomanRoman писал(а):
На вход схемы HiAsm поступают числа 0-100 (сигнал + шум) с промежутком 0,5 с. Как организовать цифровой фильтр «бегущее среднее», используя алгоритм программы (см. ниже)? Пробовал уложить формулу фильтра в элемент MathParse, но получается кольцевание с ошибкой компиляции. Может быть есть стандартное решение на HiAsm?

Add(MainForm,7345118,273,196)
{
Caption="RunningAverage"
}
Add(Timer,12654630,336,196)
{
Interval=500
AutoStop=9999999
link(onTimer,7290067:doNext,[])
}
Add(Label,11097072,728,245)
{
Width=384
Height=115
Align=2
Font=[MS Sans Serif,23,0,0,1]
AutoSize=1
}
Add(Label,14996953,728,196)
{
Top=115
Width=384
Height=146
Align=5
Font=[MS Sans Serif,23,0,0,1]
AutoSize=1
}
Add(MathParse,11086776,672,196)
{
MathStr="( %1 - %0 ) * %2"
link(onResult,14996953:doText,[])
link(X2,15609717:Value,[])
}
Add(Hub,2023453,630,196)
{
link(onEvent1,11086776:doCalc,[])
link(onEvent2,11097072:doText,[(662,209)(662,251)])
}
Add(Memory,15609717,679,133)
{
@Hint=#31:коэффициент фильтрации, 0.0-1.0|
Default=Real(0.1)
AddHint(164,-8,187,13,@Hint)
}
Add(MathParse,2953015,448,196)
{
MathStr="sin( %1 ) * 50 + 50"
AngleMode=1
link(onResult,2023453:doEvent1,[])
}
Add(CounterEx,7290067,392,196)
{
Max=359
link(onNext,2953015:doCalc,[])
}
Add(InfoTip,2948199,315,140)
{
Info=#17:Генератор сигнала|
Width=218
Height=123
}

карма: 15

0
Редактировалось 2 раз(а), последний 2024-10-18 04:26:06