function dane=wczytaj_m3660(nazwa_pliku)
// wczytuje plik TXT zapisany w programie ScopeView i ekstrahuje
// czas i temperaturę
// dane -- macierz próbek
	f=mopen(nazwa_pliku,'r')
	while 1==1 do
	  l=mgetl(f,1)
    if length(l)>22 then
      lpocz=strsplit(l,22)
      if lpocz(1)=='''*** Run Scope pressed' then
        mgetl(f,3)
        break
      end
    end
  end

  probka=1
  while 1==1 do
    l=mgetl(f,1)
    lpocz=strsplit(l,23)
    if lpocz(1)=='''*** Stop Scope pressed' then
      break
    end
    ltok=tokens(l)
    czasmac=strsplit(ltok(4),[3 6 8])
    czas=msscanf(czasmac(1),'%d')*60*60+msscanf(czasmac(2),'%d')*60+msscanf(czasmac(3),'%d')
    if czasmac(4)=='pm' then
      czas=czas+12*60*60
    end
    if probka==1 then
      czaspocz=czas
      dane(probka,1)=0
    else
      dane(probka,1)=czas-czaspocz
    end
    dane(probka,2)=msscanf(ltok(1),'%d')
    probka=probka+1
  end

	mclose(f)
endfunction

function krzywa=wykresl(dane)
// wykreśla dane pobrane funkcją wczytaj_m3660()
// dane -- macierz próbek
// krzywa -- obiekt krzywej
  plot(dane(:,1),dane(:,2))
  krzywa=gce()
  xtitle('','t / s','Tc / °C')
endfunction

function zmien_kolor(krzywa,numer_koloru)
// zmienia kolor krzywej
// krzywa -- obiekt który zwróciła funkcja wykresl()
// numer_koloru -- numer koloru wg numeracji Scilaba
  krzywa.children(1).foreground=numer_koloru
endfunction

function usun_krzywa(krzywa)
// kasuje z wykresu krzywą
// krzywa -- obiekt który zwróciła funkcja wykresl()
  delete(krzywa)
endfunction

function [TA,TCst,tau,TC_apr]=aproksymacja(dane)
// wyznacza i wykreśla aproksymację charakterystyki nagrzewania
// przyjmując model inercyjny 1. rzędu
// dane -- macierz próbek
// TA -- aproksymowana temperatura otoczenia
// TCst -- temperatura ustalona
// tau -- stała czasowa nagrzewania
// TC_apr -- punkty krzywej aproksymującej

  function e=G(p,z)
    y=z(2), x=z(1)
    e=y-FF(x,p)
  endfunction

  function y=FF(x,p)
    theta1=p(1), theta2=p(2), tau=p(3)
    y=theta2-(theta2-theta1)*exp(-x/tau)
  endfunction

  tc_min=min(dane(:,2))
  tc_max=max(dane(:,2))
  t_min=min(dane(:,1))
  t_max=max(dane(:,1))
  t_meas=t_max-t_min
  p0=[tc_min;tc_max;t_meas/3]
  [p,err]=datafit(G,dane',p0)
  TA=p(1)
  TCst=p(2)
  tau=p(3)

  if t_max<t_min+5*tau then
    t_max=t_min+5*tau
  end
  podst_t=[t_min:(t_meas/100):t_max]
  clf
  plot2d(dane(:,1),dane(:,2),-1)
  wpom=gce()
  plot2d(podst_t,FF(podst_t,p))
  wapr=gce();
  wpom.children(1).mark_foreground=12;
  wapr.children(1).foreground=5;
  wapr.children(1).thickness=2;
  styczna=[t_min t_min+tau; TA TCst]
  theta_ust=[t_min t_max; TCst TCst]
  plot(styczna(1,:),styczna(2,:),'m-.',theta_ust(1,:),theta_ust(2,:),'m--')
  xtitle("","t / s","Tc / °C");
  
  TC_apr=[podst_t',(FF(podst_t,p))']
endfunction
