[php]if exist/is_empty

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb een probleempje met het verwerken van data...

bij het maken van een movingaverage gaat het aan het begin en eind van de data mis. (moving average = een datapunt + & - x aantal datapunten / (2x + 1)punten)

dus op t=0 krijg je een probleem met een aantal niet bestaande datapunten...
om dit te ondervangen wil ik een test maken alleen kan ik geen is_empty oid vinden in php... (is_null werkt niet aangezien er gewoonweg geen t=-1 t=-2 etc bestaat) heeft iemand een idee?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    function CalcMovingAverage($index) {
        $interval = 7;
        $Sum      = 0;
        $Avg      = 0;
        $AvgCount = 0;
        $iCount   = count($this->arrImgData);
        
        for($i = 0; $i < $iCount; $i++) {
            $Sum      = 0;
            $Avg      = 0;
            $AvgCount = 0;
            for($j = $i - $interval; $j < $i + $interval; $j++) {    
                if($j < $iCount) {
                    $Sum += $this->arrImgData[$j][2];
                    $AvgCount++;
                }
            }
            $Avg = $Sum / $AvgCount;
            $this->arrImgData[$i][$this->iColumnCount + 1 + $index] = $Avg;
        }
    }

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
wat bedoel je precies? wil je een functie die controleert of een variabel leeg is? dan heb je empty() nodig.

en trouwens ik zie geen t, je bedoelt $i zeker

[ Voor 19% gewijzigd door Michali op 06-12-2002 12:47 ]

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Joror
  • Registratie: Augustus 2001
  • Laatst online: 11-03-2017

Joror

the eternal lurker

Je zoekt de infameuze isset() functie zeker..

nada aka zilch, formerly known as zip


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
niet isset... isempty is misschien een beetje krom...
ik bedoel idd $i maar dat is een tijdstip vandaar dat ik de waarde t=0 etc gebruikte...

het probleem is dus dat de bovenstaande code bij het eerste datapunt van een array nog eens 7 datapunten daarvoor wil gaan kijken... en aangezien die niet bestaan er veel te veel foutmeldingen in de eventlog komen... (7 voor punt 1, 6 voor punt 2, 5 voor punt 3 etc...). dit wil ik op de een of andere manier afvangen...

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

code:
1
for($j = $i - $interval; $j < $i + $interval; $j++) {

->
code:
1
for($j = $i - $interval; $j > 0 && $j < $i + $interval; $j++) {


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hmmm zo simpel... krijg nu wel een ander probleem (gemiddelde klopt niet meer) maar dat lukt wel denk ik
thx

edit: soms denk je gewoon krom :).
uiteindelijk nog anders opgelost maar acm thx voor de goede richting
voor de volledigheid

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function CalcMovingAverage($index, $interval = 7) {
//        $interval = 7;
        $Sum      = 0;
        $Avg      = 0;
        $AvgCount = 0;
        $iCount   = count($this->arrImgData);
        
        for($i = 0; $i < $iCount; $i++) {
            $Sum      = 0;
            $Avg      = 0;
            $AvgCount = 0;
            if (($i > $interval) && (($i + $interval) <= $iCount)){
                for($j = $i - $interval; $j < $i + $interval; $j++) {    
                    if($j < $iCount) {
                        $Sum += $this->arrImgData[$j][2];
                        $AvgCount++;
                    }
                }
                $Avg = $Sum / $AvgCount;
            }
            elseif ($i <= $interval) {
                for($j = 0; $j < $i + $interval; $j++) {
                    if($j < $iCount) {
                        $Sum += $this->arrImgData[$j][2];
                        $AvgCount++;
                    }
                $Avg = $Sum / $AvgCount;
                    
                }
            }
            else {
                for($j = $i - $interval; $j < $iCount; $j++) {    
                    if($j < $iCount) {
                        $Sum += $this->arrImgData[$j][2];
                        $AvgCount++;
                    }
                }
                $Avg = $Sum / $AvgCount;


            }
            $this->arrImgData[$i][$this->iColumnCount + 1 + $index] = $Avg;
        }
    }

[ Voor 105% gewijzigd door Verwijderd op 06-12-2002 16:16 ]

Pagina: 1