Bloc Scicos
eng - fr


Bloc élévateur de cadence

\epsfig{file=UPSMPL_f.eps,width=90.00pt}

Contenu

Palette

Description

Le bloc élévateur de cadence augmente le taux d'échantillonnage du signal d'entrée en répétant les valeurs ou en insérant des zéros. L'augmentation de la cadence du pas d'échantillonnage est déterminée par le paramètre 'Upsample factor' de la boîté de dialogue.

Ce bloc est capable de traiter des signaux d'entrée de type 'sample-based' et 'frame-based' avec le choix des valeurs du paramètre 'Type of upsample' de la boîte de dialogue. Les choix 0 et 1 sont les signaux 'sample-based' et les chois 1 et 2 pour les signaux 'frame-based'.

L'exemple suivant montre les deux types de sortie que peut réaliser ce bloc avec un facteur de sur-échantillonnage de 8.

\begin{figure}\centering
\scalebox{0.7}{%
\input{cadence_temp.pstex_t}}
\end{figure}
Figure : Entrée et sortie régulière du bloc UPSMPL_f

Boîte de dialogue

\begin{figure}\begin{center}
\epsfig{file=UPSMPL_f_gui.eps,width=300pt}
\end{center}\end{figure}

Propriétés par défaut

Fonction d'interface

UPSMPL_f.sci

Fonction de calcul (type 4)


/* surecht Scicos temporal oversamplig and zero insert block
 * Type 4 simulation function ver 1.0 - scilab-3.0
 * 21 décembre 2004 Author : - IRCOM GROUP - A.Layec
 */
 
/* REVISION HISTORY :
 * $Log$
 */
  
#include "scicos_block.h"
#include "machine.h"
#include <stdio.h>
/* Entrée régulière : signal à surechantilonner
 * Sortie régulière : signal suréchantilonné
 * Entrée évènementielle : néant
 * Sortie évènementielle : néant
 *
 * Paramètres entier : insz[0] : taille du vecteur en entrée
 *                    ipar[0] : nombre d'échantillons
 *                    ipar[1] : option
 *                              0/1 : traitement séquentiel
 *                              2/3 : traitement vectoriel
 *                              0/2 : pas d'insertion de zéro
 *                              1/3 : insertion zéro
 *
 * état discret     : z[0] : valeur initiale du numéro échantillons
 */

/*prototype*/
void surecht(scicos_block *block,int flag)
{
  /*déclaration des variables*/
  double *y;
  double *u;
  int i,opt,nu,nech,ny;
  int counter;

  /*Récupération des adresses des ports réguliers*/
  y=(double *)block->outptr[0];
  u=(double *)block->inptr[0];

  /*récupération du nombre d'échantillons*/
  nu=block->insz[0];
  nech=block->ipar[0];
  ny=block->outsz[0];
  opt=block->ipar[1];
  
  /* Le flag1 test la valeur du compteur échantillon
   * et délivre u[] dans y[] quand le compteur
   * arrive à la valeur ipar[0]
   */
  if(flag==1)
    {/*Vector*/
     if (opt==2||opt==3)
     {
      opt=opt-2;
      counter=(int)block->z[0];
      /*Appel routine surecht_c*/
      surecht_c(&opt,&nu,&nech,&counter,&u[0],&y[0]);
     }
     /*scalar*/
     else if(opt==0)
     {
      /*si z[]=ipar[0] y[]=u[]*/
      if((int)block->z[0]==nech)
      {
       block->z[0]=1; /*RAZ compteur*/
       for(i=0;i<block->insz[0];i++) y[i]=u[i];
      }
      /*si z[]!=ipar[0] y[]=0*/
      else
      {
       for(i=0;i<block->insz[0];i++) y[i]=0;
       block->z[0]++; /*incrémente compteur*/
      }
     }
     else if(opt==1)
     {
      for(i=0;i<block->insz[0];i++) y[i]=u[i];
     }
    }
}

Voir aussi

Auteurs

IRCOM Group Alan Layec