Interfacing function
eng


MAXMIN

File content


function [x,y,typ]=MAXMIN(job,arg1,arg2)
  x=[];y=[];typ=[]
  select job
   case 'plot' then
    if arg1.model.ipar==1 then 
      CCC='MIN'
    elseif arg1.model.ipar==2
      CCC='MAX'
    else
      CCC='Min/Max'
    end
    standard_draw(arg1)
   case 'getinputs' then
    [x,y,typ]=standard_inputs(arg1)
   case 'getoutputs' then
    [x,y,typ]=standard_outputs(arg1)
   case 'getorigin' then
    [x,y]=standard_origin(arg1)
   case 'set' then
    x=arg1;
    graphics=arg1.graphics;exprs=graphics.exprs
    model=arg1.model;
    while %t do
      [ok,mm,nin,zcr,exprs]=..
	  getvalue('Set Max/Min block parameters',..
		   ['Min (1) or Max (2) ';'Number of input vectors (1 or 2)';'Zero-crossing (1: yes, 0;no)'],..
		    list('vec',1,'vec',1,'vec',1),exprs)
      if ~ok then break,end
      if zcr<>0 then zcr=-1, end
      if mm<>1 then mm=2,end
      if nin<>1 & nin<>2 then 
	message('Wrong number of inputs, only 1 and 2 allowed')
	ok=%f
      end
      if ok then
	if nin==1 then
	  [model,graphics,ok]=check_io(model,graphics,-1,1,[],[])
	else
	  [model,graphics,ok]=check_io(model,graphics,[-1,-1],-1,[],[])
	end
      end 
      if ok then
	model.nzcross=zcr;
	if nin==1 then
	  model.nmode=abs(zcr);
	else
	  model.nmode=zcr
	end
	model.ipar=mm;
	graphics.exprs=exprs;
	x.graphics=graphics;x.model=model;
	break
      end
    end
   case 'define' then
    model=scicos_model()
    model.sim=list('minmax',4)
    model.out=1
    model.in=-1
    model.blocktype='c'
    model.dep_ut=[%t %f]
    model.ipar=0;
    exprs=[string([2,1,1]')]
    gr_i=['txt=[CCC];';
	  'xstringb(orig(1),orig(2),txt,sz(1),sz(2),''fill'')']
    
    x=standard_define([2 2],model,exprs,gr_i)
  end
endfunction