Jak vyhodnotit opakování se tvaru beztvaré křivky – Matematika – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak vyhodnotit opakování se tvaru beztvaré křivky – Matematika – Fórum – Programujte.comJak vyhodnotit opakování se tvaru beztvaré křivky – Matematika – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
VladislavK0
Super člen
15. 3. 2016   #1
-
0
-

Zdravím matematiky

Mám trochu problém jak se vypořádat s následující úlohou.

Mám nekonečný stream dat ve kterém mi přichází číselná hodnota pro osu Y (grafu) osa X je naštěstí konstanta 20ms. Takže pokud tyto data zobrazím v nějakém grafu tak vidím spojitou křivku. A teď ten problém - jde o to že v různých časových intervalech se ty hodnoty Y opakují neboli průběh té křivky se opakuje. Podotýkám nejedná se o sinusoidu ani jiný pravidelný tvar tak křivka je prostě beztvará. 

No a já potřebuji mít výsledkem logickou hodnotu že ten beztvarý tvar se během několika posobě jdoucích sekund přesně opakuje a to až do doby kdy se změní za jiný tvar. Takže výstupem mělo být následující čase

T0 - T5  FALSE

T5 - T7 TRUE

T7 - T25 FALSE

T25 - T148 TRUE

T148 - T150 FALSE

T150 - T250 TRUE

Myslíte si že by se toto dalo zmáknout nějakou matematikou - poraďte stačí odkazy na matematickou nauku

Nahlásit jako SPAM
IP: 37.48.34.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
peter
~ Anonymní uživatel
4014 příspěvků
16. 3. 2016   #2
-
0
-

Pro jaky obor, predmet do skoly to potrebujes resit? Matematiku?
Protoze to prozatim vypada jako programovaci problem. Si budes pamatovat posledni hodnotu. A pokud se zmeni, tak vypsat 0, pokud je stejna, tak vypsat 1. Jestli te pak zajima delka stejnych hodnot, tak pocet jednicek +1.
1 2 3 3 3 4 5 6 7 7 7 8
0 0 0 1 1 0 0 0 0 1 1 0
a = pole[n-1]
b = pole[n]
x = (a - b == 0) ? 1 : 0; // x[n]
y = (x[n]==0 && x[n-1]==1) || x[n]==1 ? y + 1 : 0; // jednicek
z = x[n]==0 ? z + 1 : 0; // nul

Nahlásit jako SPAM
IP: 2001:718:2601:26c:3c3c:ae...–
P
~ Anonymní uživatel
212 příspěvků
16. 3. 2016   #3
-
0
-

Jde o nalezeni opakujicich se vzoru v datech. Google: find repeated pattern

Nahlásit jako SPAM
IP: 95.82.135.–
VladislavK0
Super člen
16. 3. 2016   #4
-
0
-

Díky za reakci pro jistotu přidávám obrázek, mě nejde o to zjišťovat posloupnost stejných hodnot jdoucí bez prostředně za sebou viz: příklad 1 2 3 3 3 4 5 6 7 7 7 8 mě jde o to že se křivka jako celek v různých časových intervalech opakuje.

  • Nevím délku to ho intervalu - pokaždé bude jiná.
  • Nemám reálný startovní bod od kterého se mohu odrazit
  • tak křivka se zobrazuje ze streamu takže v podstatě
  1. první "startovní" část již stářím umřela
  2. zatímco závěrečná část toho vzorku se ještě nenarodila.

Připojen obrázek.

ps: nepotřebuji to do školy, skutečně se jedna o programátorský oříšek

díky za každou ideu jak toto řešit

Nahlásit jako SPAM
IP: 37.48.34.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
16. 3. 2016   #5
-
0
-

Pokud správně rozumím, máš digitalizovaný analogový signál se vzorkovací periodou 20ms (50 hodnot za sekundu). Potřebuješ najít v signálu jeho periodu a její tvar.

Asi bych si data "nahrál" do databáze (je potřeba mít historii signálu) a zpracovával je ze záznamu. Pak bych se snažil najít jednu pravidelně se opakující hodnotu a zkoumal sekvence následující za touto hodnotou. Ještě mne napadlo zkusit na nějakém úseku signálu harmonickou analýzu a porovnávat amplitudu a fázi harmonických zvolených úseků. Když se úseky budou překrývat, mohlo by se podařit najít opakování pomocí shody amplitudy a fáze harmonických... ale je to jen nápad, jestli funkční jsem nezkoušel.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
16. 3. 2016   #6
-
0
-

Ještě jeden nápad: zkusit vytvořit funkci (polynom n-tého řádu), která by popisovala průběh hodnot v čase zvoleného časového úseku a porovnávat koeficienty tohoto polynomu u jednotlivých časových úseků

hu

Nahlásit jako SPAM
IP: 195.178.67.–
VladislavK0
Super člen
16. 3. 2016   #7
-
0
-

Hluche ucho díky toto je odpověď

Jde je o to že ze školy jsem už hoooodně dlouho proto dotaz na teoretickou matematiku.

K databazi: bohužel v tomto projektu se žádná databáze používat nebude.

A co je horší já se tu shodu potřebuji dozvědět co nejrychleji - řádově během několika sekund

Takže

1 Analýza harmonického signálu

2 Polynom N-tého řadu

No už teď se mi kouří z hlavy    jdu po letech otevřít VŠ scripta snad si na něco vzpomenu   

Nahlásit jako SPAM
IP: 37.48.34.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
16. 3. 2016   #8
-
0
-

#7 VladislavK
Kamoš říkal něco o Fourierově transformaci. Jen si nejsem jistý, jestli mi nadával nebo radil....

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
16. 3. 2016   #9
-
0
-

#8 hlucheucho
O FFT sem premyslel. Vybrat jen par nejvyznamnejsich harmonickych frekvenci a podle toho jake to jsou dekodovat, jaky je to usek... Jen by se musely vychytat zacatky treba kdy je signal v 0 nebo nejake jine konkretni hodnote a stoupa...

Mozna i jednodussi varianta Haar Wavelet a srovnavat prvni ty nejvyssi urovne, pokud se schoduji, tak preskocit na podrobnejsi rozdily, jen to bude nachylnejsi na odchylky

Nahlásit jako SPAM
IP: 212.47.3.–
Program vždy dělá to co naprogramujete, ne to co chcete...
16. 3. 2016   #10
-
0
-

#9 KIIV
26 let po maturitě, VŠ matematika mne míjí úplně.... Někdy mám pocit, že matematici jsou šílení mimozemšťani.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
P
~ Anonymní uživatel
212 příspěvků
16. 3. 2016   #11
-
0
-

Tak jeste jednou: interval vzorkovani je konstantni, namerene hodnoty tvori nejakou sekvenci - podobne jako je string sekvence znaku. A jde o to najit v teto sekvenci opakujici se vzory. Viz muj predchozi tip - Google: find repeated pattern. Bude to podobne jako u kompresnich algoritmu. Startovni bod si musis urcit - napr. prvni namerena hodnota po spusteni rozpoznavace opakujicich se krivek. 

Nahlásit jako SPAM
IP: 85.93.116.–
peter
~ Anonymní uživatel
4014 příspěvků
16. 3. 2016   #12
-
0
-

Jo, to je jina :)
Tak, redakcni systemy, i total commander dokaze najit rozdil / shodu v textu mezi dvema soubory. Tak nejaky podobny program potrebujes.

Jak radi kluci, polynomy a furierova transformace (mp3, jpeg) se daji taky pouzit.

Ale prijde mi to zbytecne prepocitavat cisla na jina cisla, kdyz chces jenom porovnat. Rekneme, ze si vemes vzorek 2 po sobe jdouci cisla a budes hledat shodu mezi ostatnimi cisly. Nesedi, tak prvni cislo zahodis, a porovnavas cislo dva a tri. Atd. Principialne je to ZIP algoritmus, vytvareni slovniku, ale zip preskakuje. 

1 2 3 1 2 3 4
slovnik = array()
n = 0
m = 0 // pozice v souboru
o = 2 // nacist dva znaky
12 - je ve slovniku? ne, slovnik[n] = 12, n++, m++
23 - je ve slovniku? ne, slovnik[n] = 23, n++, m++
31 - je ve slovniku? ne, slovnik[n] = 31, n++, m++
12 - je ve slovniku? ano (slovnik[0] = 12), m=m, o++ (nacist 2+1 znaky)
... 123 - je ve slovniku? ne, slovnik[n] = 123, n+=delka(123), 0=2
4

Vyhledavani ve slovniku mas pak klasicky cyklus
for (i=0;i<n;i++) {if (slovnik[i]==kombinace) return n;} return -1;

Nahlásit jako SPAM
IP: 2001:718:2601:26c:3c3c:ae...–
Řešení
VladislavK0
Super člen
2. 4. 2016   #13
-
0
-
Vyřešeno Nejlepší odpověď
Nahlásit jako SPAM
IP: 37.48.41.–
Manželka programátora pošle svého muže koupit chleba s dovětkem kdyby měly housky přines jich deset! Co přinese programátor??
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý