Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Oversampler
- {
- private $data;
- private $output;
- private $alpha; //Coefficient de pondération
- private $factor; //Coefficient de samples en plus
- public function __construct(array $_d,$_f,$_a)
- {
- $this->data = $_d;
- $this->factor = $_f;
- if(abs($_a)<0 && abs($_a)>0)
- $this->alpha = $_alpha;
- else
- $this->alpha = 0.5;
- }
- public function oversample()
- {
- $output = $this->data;
- for($i=0;$i<$this->factor/2;$i++){
- $output = $this->process($output);
- }
- return $output;
- }
- private function process($data)
- {
- $inData = count($data);
- $output = [];
- //Remplir l'array avec les old values et les blank values
- for($i=0;$i<($inData*2)-1;$i++)
- {
- if($i%2==0)//On est sur une donnée déjà présente
- {
- $output[$i] = $data[$i/2];
- }
- else
- {
- $output[$i] = 0;
- }
- }
- //Ajuster les blank values
- for($i=0;$i<$inData*2-1;$i++)
- {
- if($i%2 != 0)//On est sur une donnée "blank"
- {
- $output[$i] = ($output[$i-1] * $this->alpha) + ($output[$i+1] * (1- $this->alpha));
- }
- }
- return $output;
- }
- }
- $data = [-1,-0.5,0,0.5,1];
- $oversampler = new Oversampler($data,4,0.5);
- print_r($oversampler->oversample());
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement