|
Виж темите без отговор | Виж активните теми
Дата и час: Пет Авг 21, 2026 9:51 am
|
Страница 1 от 1
|
[ 14 мнения ] |
|
| Автор |
Съобщение |
|
Grubi
Ранг: Форумен бог
Регистриран на: Чет Мар 16, 2006 9:42 am Мнения: 12118 Местоположение: Гьотеборг
|
 Филтър в C#
Имаме радиоприменик, и с филтъра реализиран в кода премахваме статичните смущения от приетия сигнал. Т.е. взимаме един пакет, който смятаме за статичен(в който измерваме статичния шум) и после го вадим от всички последващи динамични (в които се предполага се измерваме сигнал+шум) пакети и накрая добавяме разликата между зададената минимална и максимална стойност, за да формираме графиката(т.е. получаваме права линия ако няма друг сигнал освен шума). Лошото е, че статичните смущения се взимат само от един пакет с данни, а аз искам да осредня примерно 50 пакета и този осреднен статичен пакет да го вадя от последващите динамични. Лошото, е че не мога да се оправя с масивите в някакъв цикъл до 50, в който да направя осредняването. Някаква идея, освен да продължа да чета дебелите книги за C#
// Cluttermaptest
int avg = (radar.ZoomMax - radar.ZoomMin) / 2;
int[] buffer2 = new int[FullFrameQueue.Newest.FullFrame.Length];
Array.Copy(FullFrameQueue.Newest.FullFrame, buffer2, buffer2.Length);
if ((clutterMap == null) || (clutterMap.Length != buffer2.Length))
{
clutterMap = new int[FullFrameQueue.Newest.FullFrame.Length];
Array.Copy(FullFrameQueue.Newest.FullFrame, clutterMap, clutterMap.Length);
}
for (int j = 0; j < buffer2.Length; j++)
{
buffer2[j] = buffer2[j] - clutterMap[j] + avg;
}
fullFrameQueue.Enqueue(buffer, tickCount);
fullFrameQueue.Newest.FilteredFrame = buffer2;
}
}
|
| Сря Окт 29, 2008 1:53 pm |
|
 |
|
Реконструктор
Ранг: Форумен бог
Регистриран на: Съб Сеп 25, 2004 12:32 pm Мнения: 8397 Местоположение: София
|
Поправете ме, ако греша, но ваденето на дадена съставляваща от общ сигнал не е ли въпрос на много яка математика (Фурие, уейвлети и т.н.)?
|
| Сря Окт 29, 2008 6:25 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
и Аз мисля че книгата за C# ти е най-малкия проблем - трябва да наблегнеш малко на математикаъа (всъщност доста!)
(ако съм схванал какво точно искаш да направиш ... )
_________________ путинофили: "иди н***й"
|
| Сря Окт 29, 2008 6:50 pm |
|
 |
|
Grubi
Ранг: Форумен бог
Регистриран на: Чет Мар 16, 2006 9:42 am Мнения: 12118 Местоположение: Гьотеборг
|
ами в случая не - пакета в случая се разделя на 128 части и след като запомниш статичния пакет(околния шум), започваш измерването. от всяка част на последно постъпилия пакет се вади съоветната стойност от статичния пакет, като накрая се добавя средната стойност от максимума и минимума, които могат да се изобразяват в съоветния прозорец. така ако нямаш сигнал, виждаме права линия - в идеалния случай статичния пакет се вади от само себе си. когато обаче има отклонение от статичния сигнал, в иделания случай виждаш само него(изменението). Май на това му казват медианен филтър.
Сложната математика в случая са едни корелационни приемници в чипа от който идват пакетите, но там няма как да се пипа... А това първоначален вид на филтъра, доказано върши работа, но смениха софтвера и сега тоя Ц# ми идва в повече...
|
| Сря Окт 29, 2008 6:54 pm |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
 Re: Филтър в C#
Честно казано не разбрах кое те затруднява езика C# или това което искаш да направиш (Филтъра)
Грешка 1 int avg = (radar.ZoomMax - radar.ZoomMin) / 2;
още от АНСИ С се знае че резултата от това е грешен защото е декларирано като INT т.е примерно ако имаш 3/2 реално отговора е 1.5 но при теб ще се получи 1
Разгледай Math класа в него са ти всички възможни математически функции .
за сметки ползвай DOUBLE или DECIMAL a не INT
Ако искаш дай конкретен пример за да се знае от какви данни какво искаш да получиш .. аз лично за изчистване на шум ползвам една формула с Тегловен коефициент която е вид интегриране и се държи добре .
Пример : за 200 измервания
y(t)=(199*y(t-1)+a)/200
y(t) - новата интегрирана стойност
y(t-1) - старата интегрирана стойност
a - новата измерена стойност
|
| Чет Окт 30, 2008 10:07 am |
|
 |
|
Grubi
Ранг: Форумен бог
Регистриран на: Чет Мар 16, 2006 9:42 am Мнения: 12118 Местоположение: Гьотеборг
|
благодаря, в момента основната трудност е C#. в този си вид филтъра работи, а това че се закръглява в момента не е проблем (но благодаря за съвета и формулите).
Основно проблема ми е да боравя с обекти, методи и т.н. - та явно ще продължа да чета докато ми светне.
В случая вместо да заредя само buffer2, който да се зарежда от стойността на FullFrameQueue.Newest.FullFrame, искам да заредя още 50 буфера например и да ги осредня.
Иначе други проблеми няма, като изключим че гърми тук и там и създателите на кода си признават че още са в самото начало.
Офтопик> Започвам да се убеждавам, че сoфтвера от мания да стане по-лесен и удобен, избива в някакви ужасии - Acrobat Reader6 - отваря огромни файлове без да гръмне, заема 43МБ... Acrobat Reader 8 и9 гърмят и заемат по 200МБ и повече. А по старите Акробати за малки файлове нямат равни.
|
| Чет Окт 30, 2008 11:23 am |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
List<byte[]> s12 = new List<byte[]>();
for(int i =0;i<50;i++)
{
s12.Add(Buffer);
}
foreach (byte[] b in s12)
{
/// тука си слагаш обработката за всеки масив като b ти е всеки един от масивите
}
Лошо е да се говори за нещо за което нищо не знаеш и аз преди година писах на Делфи и го боготворях  )
но преди 2 дни ми се наложи да пиша пак на делфи и честно казано имах чувството че се качих от мерцедес на трабантче 
|
| Чет Окт 30, 2008 11:29 am |
|
 |
|
Grubi
Ранг: Форумен бог
Регистриран на: Чет Мар 16, 2006 9:42 am Мнения: 12118 Местоположение: Гьотеборг
|
ще го пробвам. нямах предвид Ц# за това, че е лош. имах предвид че акробата работеше добре, а сега се опитват да го накарат да свири, пее
и т.н. но това разваля основното му предназначение - да отваря документи и да ги прави лесни за четене.
всяко непознато нещо се посреща с неодобрение и скептицизъм по стар български обичай  , опитвам се да си променя подхода.
|
| Чет Окт 30, 2008 1:44 pm |
|
 |
|
ash
Ранг: Минаващ
Регистриран на: Чет Дек 18, 2008 9:00 pm Мнения: 16 Местоположение: 0x2A
|
Той не е български тоя обичай
Масивите могат да бъдат и многомерни... тоа лист е супер тежък тип, намразих го откакто си направих едни прости сметки. Ако ще правиш големи изчисления с повечко данни и те интересува скоростта, ползвай [] от byte[], вместо <>...
ПъСъ: ако имаш работещ код на нещо друго, давай насам, ще помагаме да се портне на До Диез
_________________ Bit happens
|
| Пон Апр 18, 2011 7:08 pm |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10103
|
аз държа текущ ридер и петица. по простата причина, че за 5 имам плъгин за селект на колона от таблица.
особено ми е полезно, като "правя" схематични символи само от .pdf
|
| Пон Апр 18, 2011 7:36 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6107
|
за тебе С# е мерцедеса ли !?!?!?!
_________________ main[-1u]={1};
|
| Вто Апр 19, 2011 1:29 am |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
Гледна точка
Явно и теб те дразнят хората които работят с продукти създадени от всичко Micro започващо.
|
| Вто Апр 19, 2011 8:57 am |
|
 |
|
ash
Ранг: Минаващ
Регистриран на: Чет Дек 18, 2008 9:00 pm Мнения: 16 Местоположение: 0x2A
|
Сега за "марки" ли ще спорите? Нали езикът е начин за изразяване и изборът на такъв зависи преди всичко от крайната цел.
Острото Цъ има страшно много глезотии, които са почти безценни, ако пишеш... дотнет, силвърлайт...
А пишеш нещо или за пари или за кеф. Ако го правиш за пари, изобщо не трябва да ти пука и ако можеш да правиш добри свирки и съвестта ти го позволява, нека някой ти се присмива, а ти да правиш пачки с това. Ако го правиш за кеф - всеки език обогатява човека, тъй като с различния синтаксис и "граматика" като цяло, си идва и нова гледна точка за крайния продукт.
В този смисъл, споровете за "по-добри" езици е интересна изложба на речниковия запас, която е полезна само ако не се прекалява.
Мисля си на глас, де, вие си продължавайте.
_________________ Bit happens
|
| Вто Апр 19, 2011 10:05 am |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6107
|
Не, не - не ме дразни, нито платформите нито съм предубеден към някой език
просто двете платформи Делфи и С# са достатъчно мощни НО коренно различни за да се сравняват с мерцедес и трабантче
Виж, да сравняваш Java и NET съм съгласен....
@Grubi:
не разбрах какво точно те мъчи в случая
а само информативно ти давам една "светлинка" да разгледаш в гугъла - CFAR(Constant false alarm rate) може и да ти е от полза :)
а може и:
Exponential Moving Average
EMA(current) = ( (Price(current) - EMA(prev) ) x Multiplier) + EMA(prev)
_________________ main[-1u]={1};
|
| Вто Апр 19, 2011 11:47 am |
|
|
|
Страница 1 от 1
|
[ 14 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 0 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|