| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- xdel(winsid())
- clear;
- t = linspace(-5,20,5000);
- a = 0.4;
- b = 0.45;
- k = 1;
- magnitude = 100;
- offset = 20
- // 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;
- // Lägg på lite av nästa kurva, en kopia av dena kurvan
- y = [y y(1:2000)];
- t = [t linspace(25,25*(1+2/5), 2000)];
- //Generera vertikala linjer
- xpts = [1 1];
- //plot(xpts*0, ypts, '-black'); // Vertikalt streck på x =
- ypts = [(0.1*magnitude+offset) max(y)*1.5];
- plot(xpts*t(x10r), ypts, '-'); // 10% rise
- plot(xpts*t(x10f), ypts, '-'); // 10% fall
- plot(xpts*t(x10r+5000), ypts, '-'); // second 10% rise
- ypts = [(0.9*magnitude+offset) max(y)*1.25];
- plot(xpts*t(x90r), ypts, '-'); // 90% rise
- // Generera horisontella linjer
- // Pulsen
- plot(t, y, "black");
- p = get("hdl");
- p = p.children;
- p.thickness = 3;
- // max och min horisontella
- hline = ones(1,length(t));
- plot(t,hline.*max(y), '--');
- plot(t,hline.*min(y), '--');
- plot(t,hline.*0, '-black');
- // 10 och 90% horizontella
- tshort = t(x10r-150:length(t))
- hline = ones(1,length(tshort));
- plot(tshort,hline.*y(x10r), '-');
- tshort = t(x10r-150:x90r)
- hline = ones(1,length(tshort));
- plot(tshort,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";
- // Bestäm viewport och ta bort inramning
- a.data_bounds = [min(t),0;max(t),200];
- a.box = "off";
- // Fula pilar (nästan) på axlarna
- //b = a.data_bounds
- //xstring(b(1),b(4),"↑")
- //set(gce(), "clip_state","off", "text_box_mode","centered", "font_size",4)
- //
- //xstring(b(2),b(3),"→")
- //set(gce(), "clip_state","off", "text_box_mode","centered", "font_size",4)
- f=get("current_figure")
- f.figure_size=f.figure_size*1.3 // Råkade bli lagom storlek
|