| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- xdel(winsid())
- clear;
- t = linspace(-2,20,2000);
- a = 0.4;
- b = 0.45;
- k = 1;
- magnitude = 100;
- offset = 24
- // Generera självaste pulsformen
- y = k*(exp(-a*t) - exp(-b*t) );
- // Fyll på med lite platt mark före t=0
- y(y<0) = 0;
- // Normalisera till 1 och multiplicera med magnituden
- y = y/max(y)*magnitude;
- // Hitta index för första passagen av 10%
- x10r = 0;
- for i = [1:length(y)]
- if(y(i) > 0.1*magnitude)
- if((y(i)-0.1*magnitude) < (0.1*magnitude-y(x10r)))
- x10r = i;
- end;
- break;
- end;
- x10r = i;
- end
- // Hitta index för första passagen av 90%
- x90r = 0;
- for i = [1:length(y)]
- if(y(i) > 0.9*magnitude)
- if((y(i)-0.9*magnitude) < (0.9*magnitude-y(x90r)))
- x90r = i;
- end;
- break;
- end;
- x90r = i;
- end
- // Hitta index för första passagen av 10%
- x10f = 0;
- for i = [length(y):-1:1]
- if(y(i) > 0.1*magnitude)
- if((y(i)-0.1*magnitude) < (0.1*magnitude-y(x10f)))
- x10f = i;
- end;
- break;
- end;
- x10f = i;
- end
- // Lägg på ett offset
- y = y+offset;
- //Generera vertikala linjer
- xpts = [1 1];
- ypts = [-100 max(y)*2];
- //plot(xpts*0, ypts, '-black'); // Vertikalt streck på x =
- plot(xpts*t(x10r), ypts, ':');
- plot(xpts*t(x90r), ypts, ':');
- plot(xpts*t(x10f), ypts, '-.');
- // Generera horisontella linjer
- plot(t, y, "black");
- hline = ones(1,length(y));
- plot(t,hline.*y(x10r), ':');
- p = get("hdl");
- p = p.children;
- p.line_style = 7;
- plot(t,hline.*y(x90r), ':');
- // titletxt = ['$y = k(e^{-\alpha t} - e^{-\beta t})$' ; strcat(['$k=', string(k), ', \alpha=', string(a), ', \beta=', string(b), '$']) ];
- //titletxt = '$u(t) = k(e^{-\alpha t} - e^{-\beta t})$';
- //title(titletxt , 'fontsize', 8);
- //xlabel('t (s)', 'fontsize', 7);
- //ylabel('U (V)', 'fontsize', 7, 'rotation', 0);
- a = get("current_axes");
- //a.axes_visible = "off";
- // Rita axlarna i 0
- //a.x_location = "origin";
- //a.y_location = "origin";
- a.data_bounds = [min(t),-0.02;max(t),200];
|