Advertisement
Guest User

Untitled

a guest
Apr 8th, 2016
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.22 KB | None | 0 0
  1. <?php
  2. class Oversampler
  3. {
  4.     private $data;
  5.     private $output;
  6.  
  7.     private $alpha; //Coefficient de pondération
  8.     private $factor; //Coefficient de samples en plus
  9.  
  10.     public function __construct(array $_d,$_f,$_a)
  11.     {
  12.         $this->data = $_d;
  13.         $this->factor = $_f;
  14.  
  15.         if(abs($_a)<0 && abs($_a)>0)
  16.             $this->alpha = $_alpha;
  17.         else
  18.             $this->alpha = 0.5;
  19.  
  20.     }
  21.  
  22.     public function oversample()
  23.     {
  24.         $output = $this->data;
  25.  
  26.         for($i=0;$i<$this->factor/2;$i++){
  27.             $output = $this->process($output);
  28.         }
  29.  
  30.         return $output;
  31.     }
  32.  
  33.     private function process($data)
  34.     {
  35.         $inData = count($data);
  36.         $output = [];
  37.  
  38.         //Remplir l'array avec les old values et les blank values
  39.         for($i=0;$i<($inData*2)-1;$i++)
  40.         {
  41.             if($i%2==0)//On est sur une donnée déjà présente
  42.             {
  43.                 $output[$i] = $data[$i/2];
  44.             }
  45.             else
  46.             {
  47.                 $output[$i] = 0;
  48.             }
  49.         }
  50.  
  51.         //Ajuster les blank values
  52.  
  53.         for($i=0;$i<$inData*2-1;$i++)
  54.         {
  55.             if($i%2 != 0)//On est sur une donnée "blank"
  56.             {
  57.                 $output[$i] = ($output[$i-1] * $this->alpha) + ($output[$i+1] * (1- $this->alpha));
  58.             }
  59.         }
  60.  
  61.         return $output;
  62.  
  63.     }
  64. }
  65.  
  66. $data = [-1,-0.5,0,0.5,1];
  67. $oversampler = new Oversampler($data,4,0.5);
  68.  
  69. print_r($oversampler->oversample());
  70. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement