ugrás a tartalomhoz

Archívum - Jún 11, 2011

Grafikon elemző

inf · 2011. Jún. 11. (Szo), 22.55
Üdv.

Szeretnék csinálni egy alkalmazást, ami olyan grafikonok elemzésével foglalkozik, mint ami alább is látható.

Ezekről annyit kell tudni, hogy egy bizonyos anyagnak az ellenállását mérik az idő függvényében. A mérés közben 9000 pontot vesznek fel 15 perc alatt. Az ellenállás eléggé ugrál, amint látható, a kékkel jelölt rész a középvonal: 10÷20 pont mozgóátlaga. Ahol a szürke rész tömörebb, ott fut majd az alsó és felső kontúr vonal, csak egyelőre még nem gondoltam át, hogy azoknak hogyan fogom majd kiszámolni a pontjait.

Bármilyen ötletet, tapasztalatot, vagy akármit szívesen várok az ilyen adatok feldolgozásával, a görbék rajzolásával, tömörítésével, a zajszűréssel, stb... kapcsolatban. Nyilván vannak itt nálam matematikailag jóval képzettebb emberek, kíváncsi vagyok, hogy hogyan kell nekiindulni profi módon egy ilyen problémának.

Ami eddig eszembejutott:

- Ugye itt végülis arról van szó, hogy a mérés során kapunk egy jelet meg egy jó adag rárakódott zajt. Ha nem lenne zaj, akkor is lennének szürke sávok az anyag rugalmassága miatt. A zaj azt okozza, hogy az alsó meg felső szürke részek nem annyira tömöttek, sok a kiugrás, meg hogy a mozgóátlag is ugrik néha piciket. Zajszűréssel kapcsolatban lehetne simogatni a kapott görbéket, de úgy rengeteg információ elveszne. Én arra gondoltam, hogy mivel egy mérés nem mérés, ezért úgyis több mérés fog tartozni egy beállításhoz, és több párhuzamost fel lehetne használni valamilyen úton módon a jel erősítésére és a zaj csökkentésére. Nyilván ennek megvan a matematikai háttere, aminek még nem néztem utána.

- Arra is gondoltam, hogy tömörítés céljából meg lehetne próbálni Bezier görbékkel leírni az adatokat.

Tömb elemeinek csoportosítása

vtsoftware · 2011. Jún. 11. (Szo), 21.47
Üdvözletem mindenkinek!

Egy tömb elemeit szeretném csoportosítani.

Jelenleg a kódom:
$ci=1;
for($i=0;$i < count($tomb)-1;$i++) {
  $ci=1;
  if ($last != $it) {
    $oszlopok[$i][0]=$it;
    $oszlopok[$i][1]=$ci;
    $last=$it;
  } else {
    $ci=$ci+1;
    $oszlopok[$i-1][1]=$ci;
  }
}
Adott egy tömb:
$tomb=array("autó", "autó", "motor", "autó", "autó");
Kiírja: (var_export)
array (
  0 => 
  array (
    0 => 'autó',
    1 => 2,
  ),
  2 => 
  array (
    0 => 'motor',
    1 => 1,
  ),
  3 => 
  array (
    0 => 'autó',
    1 => 2,
  ),
)
Ha viszont a tömb:
$tomb=array("motor", "autó", "autó", "autó", "motor");
Kiírja: (var_export)
array (
  0 => 
  array (
    0 => 'motor',
    1 => 1,
  ),
  1 => 
  array (
    0 => 'autó',
    1 => 2,
  ),
  2 => 
  array (
    1 => 2,
  ),
  4 => 
  array (
    0 => 'motor',
    1 => 1,
  ),
)
Itt a bökkenő, valamiért nem 3 autót ír hanem kettőt és ott egy "üres" elem is.
Valaki ha tudna segíteni helyrehozni a bakit, nagyon hálás lennék...

Előre is köszönöm
 

cookie letárolás

sEEcher · 2011. Jún. 11. (Szo), 13.33
Sziasztok!

A következő problémában szeretném a segítségeteket kérni. A weboldalam egy bizonyos szolgáltatása egy alkönyvtárból fut (nem én akartam így, de a portálmotorban ez volt, én meg kezdő voltam). Egy cookie-ban van letárolva az aktuális URL, viszont ha ez az alkönyvtárban található oldal végzi ezt a cookie-zást (a saját url-jéről), akkor a _COOKIE nem látja annak cookie-ját. Nem annyira értek ehhez, de sejtésem szerint az alkönyvtárban lévő oldal nem oda rakja a cookie-ját, ahová a "főkönytárban" található oldalak. Ergo azt szeretném megoldani, hogy az alkönyvtárban található oldal által készített cookie-t is elérje a _COOKIE. Próbáltam már a setcookie-ban a path-et is megadni, de az sem vezetett eredményre.

Előre is köszönöm a segítségeteket!
 

Hibakezelés (try-catch, throw new Exception) -konstrukotrban/destruktorban

H.Z. v2 · 2011. Jún. 11. (Szo), 10.19
Kezdek kiakadni a PHP-re, de nagyon:

Egy külön file-ból betöltött osztály konstruktorában felfedezett hibát szeretnék jelezni egy throw new Exception-nel az objektumot létrehozni akaró programrésznek.
Egyszerűen nem törődik vele, fut tovább, mintha mi sem történt volna...

class DB {
protected $l;
  function __construct(){
    ...
    try {
     $this->l=new Logger("logdir/log.txt");
     $this->l->put("uzenet");
    } catch (Exception $e){
      ---hibaüzenet megjelenítése---
    }
}

class Logger {
  protected $logfile;
  function __construct($fil){ $this->logfile=$fil; }

  private function writeLog($uz){
    if(!$f=fopen($this->logfile,"a")){ throw new Exception("Hiba"); }
    ...
  }
  function put($uz){
    $this->writeLog($uz);
  }
}

Kb. így néz ki a problémás rész (remélem, nem írtam el semmit - az eredeti kódot kiherélni kissé macerásnak tűnik)
A DB konstruktorában a try-catch blokk nem képes elkapni a Loggerben kiváltott Exception-t.

Az tiszta, hogy átírhatom a programot úgy, hogy a konstruktorokban ne legyen hibakezelést igénylő művelet, de ez megint egy olyan dolog, hogy akkor minek a konstruktor, ha nem automatizálhatom a tennivalókat, rajta keresztül?
Másik variáció, hogy a hibakezelést igénylő műveletek hibaága egy die-ban kell, hogy végződjön, ami megintcsak nem tetszik, de kényszermegoldásként lehet, hogy ezt fogom használni.



+1, a fentitől független, de már a tapétát kaparom, annyira nem értem:
<?php
  if(!defined('XXXX')){ exit; }
  /*...
több soros, kikommentezett szakasz
*/
?>

Ennyi a file tartalma és azt bírja mondani, hogy "syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in"
Ezek után töröltem a file-t, újra beírtam a kommentek nélkül, most jó...
Ciki, hogy eredetileg úgy hoztam létre, hogy egy működő php file-t lemásoltam, kikommenteztem a tartalmát és elé írtam a fenti if... sort.