I try to make an App...
02-11-2015, 09:46 PM (This post was last modified: 02-11-2015 09:52 PM by dg1969.)
Post: #1
 dg1969 Member Posts: 110 Joined: Apr 2014
I try to make an App...
Hello,

I try to make an small APP derived from FUNCTION APP to plot Bode module and phase or temporal impulse response... It need a lot of improvements but it do the job very basically.

Place your transfert function (in term of X) in symb view then press plot. Choose "module" or "phase" or "temporal"... You need to fix setup plot to fit the curve manually... My best wishes is to find some help to improve the phase function to automatically plot it in the -inf ; +inf domain (without the -pi ; +pi discontinuity)

Be careful ! there are pieces of french in the soup...

Code:
 copie_les_fonctions(); replace_les_fonctions(); place_les_modules(); place_les_phases(); place_les_rep_temp(); calcule_modules(); calcule_phases(); calcule_rep_temp(); Symb(); export liste_fonctions:={}; export liste_modules:={}; export liste_phases:={}; export liste_rep_temp:={}; recalcule:={0,0,0}; export copie_les_fonctions() begin   local k;   for k from 1 to 10 do     if ISCHECK(k MOD 10) then       IFERR liste_fonctions(k):=EXPR("F"+k MOD 10) then end;     end;   end; end; export replace_les_fonctions() begin   local k;   for k from 1 to length(liste_fonctions) do     if ISCHECK(k MOD 10) then         expr("F"+k MOD 10+":=liste_fonctions("+k+")");     end;   end; end; export place_les_modules() begin   local k;   for k from 1 to length(liste_modules) do      if ISCHECK(k MOD 10) then         expr("F"+k MOD 10+":=liste_modules("+k+")");      end;   end; end; export place_les_phases() begin   local k;   for k from 1 to length(liste_phases) do      if ISCHECK(k MOD 10) then        expr("F"+k MOD 10+":=liste_phases("+k+")");      end;   end; end; export place_les_rep_temp() begin   local k;   for k from 1 to length(liste_rep_temp) do      if ISCHECK(k MOD 10) then        expr("F"+k MOD 10+":=liste_rep_temp("+k+")");      end;   end; end; export calcule_modules() begin   local k;     for k from 1 to length(liste_fonctions) do        if ISCHECK(k MOD 10) then          liste_modules(k):=20*LOG(ABS(subst(liste_fonctions(k),'X','i*ALOG(X)')));        end;     end;   recalcule(1):=0; end; export calcule_phases() begin    local k;     for k from 1 to length(liste_fonctions) do        if ISCHECK(k MOD 10) then          liste_phases(k):=ARG(subst(liste_fonctions(k),'X','i*ALOG(X)'));        end;     end;   recalcule(2):=0; end; export calcule_rep_temp() begin    local f, k;      for k from 1 to length(liste_fonctions) do         if ISCHECK(k MOD 10) then           f:="F"+k MOD 10+"(x),x,x";           f:="'("+REPLACE(STRING(CAS.ilaplace(f)),"x","X")+")*PIECEWISE(X<0,0,X≥0,1)'";           IF instring(f,"ilaplace")              THEN MSGBOX("Problème avec F"+k MOD 10); KILL;             ELSE liste_rep_temp(k):=EXPR(f);           END;         end;      end;   recalcule(3):=0; end; Symb() begin   recalcule:={1,1,1};   replace_les_fonctions;   STARTVIEW(0,1); end; Plot() begin   local choix:=1;   if ΠLIST(recalcule) then copie_les_fonctions;   end;   CHOOSE(choix,"Choisissez un type de tracé",{"Module","phase","réponse temporelle"});   CASE    IF choix==1 THEN if recalcule(1) then calcule_modules end; place_les_modules END;    IF choix==2 THEN if recalcule(2) then calcule_phases end; place_les_phases END;    IF choix==3 THEN if recalcule(3) then calcule_rep_temp end; place_les_rep_temp END;    //DEFAULT   END;   STARTVIEW(1,1); end;
 « Next Oldest | Next Newest »

 Messages In This Thread I try to make an App... - dg1969 - 02-11-2015 09:46 PM RE: I try to make an App... - dg1969 - 02-12-2015, 09:35 PM RE: I try to make an App... - dg1969 - 02-16-2015, 10:32 PM RE: I try to make an App... - cyrille de brébisson - 02-18-2015, 07:08 AM

User(s) browsing this thread: 1 Guest(s)