Subsections
Select
Branching
This block routes one of the regular inputs to the unique regular
output. the choice of which input is to be routed is done, initially
by the "initial connected input" parameter. Then, every time the block
is activated through its i-th input activation port, the i-th regular
input value port is put to the regular output.
Set parameters |
|
number of inputs |
2 |
initial connected input |
1 |
- number of inputs:a scalar. Number of regular and event inputs.
- initial connected input: an integer. It must be between 1 and
the number of inputs.
- always active: no
- direct-feedthrough: yes
- zero-crossing: no
- mode: no
- number/sizes of inputs: 2 / -1 -1
- number/sizes of outputs: 1 / -1
- number/sizes of activation inputs: 2 / 1 1
- number/sizes of activation outputs: 0 /
- continuous-time state: no
- discrete-time state: yes
- name of computational function: selector
scilab/macros/scicos_blocks/branching/SELECT_f.sci
/* Copyright INRIA */
#include "../machine.h"
void
selector(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec,rpar,nrpar,
ipar,nipar,inptr,insz,nin,outptr,outsz,nout)
integer *flag,*nevprt,*nx,*nz,*ntvec,*nrpar,ipar[],*nipar,insz[],*nin,outsz[],*nout;
double x[],xd[],z[],tvec[],rpar[];
double *inptr[],*outptr[],*t;
{
int k;
double *y;
double *u;
int nev,ic;
ic=(int)z[0];
if ((*flag)<3) {
ic=-1;
nev=*nevprt;
while (nev>=1) {
ic=ic+1;
nev=nev/2;
}
}
if (*nin>1) {
y=(double *)outptr[0];
u=(double *)inptr[ic];
for (k=0;k<outsz[0];k++)
*(y++)=*(u++);
}
else {
y=(double *)outptr[ic];
u=(double *)inptr[0];
for (k=0;k<outsz[0];k++)
*(y++)=*(u++);
}
}
Ramine Nikoukhah
2004-06-22