Range - Politechnika Wrocławska
Transkrypt
Range - Politechnika Wrocławska
Komputerowe wspomaganie eksperymentu 2 Dr Piotr Sitarek Katedra Fizyki Doświadczalnej, W11, Politechnika Wrocławska Temat na dziś Podstawy „LabTalk” cd. Co jeszcze … Dostępna jest także darmowa aplikacja Origin Viewer v9.2 Co jeszcze … Co jeszcze … darmowa aplikacja umożliwiająca podgląd plików (Origin Project (OPJ) i Origin window (OGG, OGW, OGM)) z OriginPro na komputerach, na których Origin nie jest zainstalowany i ewentualne kopiowanie danych do innych aplikacji. pojedynczy plik EXE – niepotrzebna jest instalacja Podstawy „LabTalk” wpisujemy komendy (tekst) naciskamy Enter na końcu linii jako komentarz rozumiany jest tekst na prawo od „//” /* tekst */ - dla komentarzy w wielu liniach przejście do nowej linii – Ctrl+Enter możemy pisać skrypty w wielu liniach – zaznaczamy tekst i naciskamy Enter średnik (;) na końcu każdej linii kalkulator Gdzie używać „skryptów”? Command Window Alt+3 lub View/Command Window - proste i bardziej skomplikowane obliczenia - Funkcje matematyczne - Wywoływanie X-Funkcji - Pomoc on-line: help arg Gdzie używać „skryptów”? Script Window Window/Script Window Code Builder – wbudowany debugger Alt+4 lub View/Code Builder Ciekawe opcje … X-Function Builder F10 lub Tools/X-Function Builder Ciekawe opcje … X-Function Script Samples F11 lub Tools/X-Function Script Samples Przykłady: definiowanie funkcji - Otwieramy nową kartę Origin C w Code Builderze - Wpisujemy treść funkcji - Kompilacja, zapisanie, Build … - Wywołanie funkcji np: col(B)[1] = nowaf(col(A)[1], 3) (czyli do 1-go wiersza w kolumnie B podstawiamy …) Przykłady: definiowanie makr Korzystając z makra, można powiązać skrypt lub jego fragment z jedną nazwą, która staje się poleceniem (komendą). Składnia: define nazwa {Script } (zamiast define można używać def) Przykłady: definiowanie makr W Originie jest sporo predefiniowanych makr. Można je wyświetlić pisząc np. list m [enter] Aby wyświetlić zawartość, piszemy: def nazwa Aby skasować makro, piszemy: delete –m nazwa Przykłady: definiowanie makr Zmienne w makrach: define hej { loop(ii, 1, 3) { type "$(ii). Jest fajnie!"; }; } Wywołanie np. hej Przykłady: definiowanie makr Zmienne w makrach: def mnoz { type "$(%1 * %2)"; } Wywołanie np. mnoz 2 5 Pliki skryptowe .ogs Używamy Code Builder’a, tworząc nowy plik LabTalk Script File Pliki skryptowe są podzielone na sekcje: np. [Main] Można dołączać źródła w C – np. [CreateGraph] run.LoadOC("test.c"); //uruchom i skompiluj Plot_Data("scatter","data1_b"); Definiowanie własnych Toolbarów View / Toolbars - New Następnie możemy dodać przyciski. Pod przyciski możemy podpiąć mniej lub bardziej rozbudowane skrypty .ogs Definiowanie własnych Toolbarów Definiowanie przycisków - Prawy przycisk / Properties / Size / GapFromTop = 30 //robimy miejsce nad tabelą - Wpisujemy tekst T - Prawy przycisk / Programming Control /ScriptRunAfter = ButtonUp wpisujemy fragment wykonywalny np. win -t plot line; layer -i book1_b; OK Do edycji zaznaczamy: Edit/ButtonEditMode Prawy przycisk Przydatne funkcje … delete delete [opcja] nazwa brak opcji nazwa – kasuje dane lub funkcję (np. delete col(4) ) -a kasuje tymczasowe dane -m macroName kasuje makro -v variableName kasuje zmienną Przydatne funkcje … Generatory losowe rnd () normal(npts) np. col(1) = normal(100)*2+5; uniform(npts) white_noise ix:=Col(1) level:=5 ox:=Col(2); Przydatne funkcje … Range – dostęp do danych na różnym poziomie (który należy określić) [WinName]LayerName!DataRange WinName - workbooks, matrix books, graph windows; LayerName - worksheets, matrix sheets, graph layers; DataRange - dane Tylko jako argument X-Funkcji! Przydatne funkcje … [BookName]SheetName!CellRange [MatrixBook]MatrixSheet!MatrixObject [PageWindow]LayerName!DataPlot range cc = [Book1]Sheet2!Col(3) - k 3 w Book1, Sheet2 range ll = [Graph1]Layer1!2; // 2-ga krzywa w Graph1, layer1 range mm = [MBook1]MSheet1!Mat(2); // 2-ga macierz w MBook1, MSheet1 range v1 = [Book1]Sheet2!Col(3) range [Book1]Sheet2 v2 = Col(3) range [Book1] v3 = Sheet2!Col(3) Przydatne funkcje … range v1 = Col(A) range aa=1; // col(1) range bb=B; // col(B) range cc="Test A"; // col("Test A") range aa = 1, bb = B, cc == "Test A” Podzakresy range aa = 1[2]; // cell(2,1), row2 z col(1) range bb = 1[1]:3[10]; // cell(1,1) do cell(10,3) range cc = [book1]sheet2!col(a)[3:10]; // pz col(a) w book1 sheet2 Przydatne funkcje … range ww = [Book1]Sheet1!; // Book1, Sheet1. ww.name$ = "My Data"; // zmiana nazwy range ll = [Graph1]layer2!; // graph1, layer2. ll.color = color(green); // kolor tła na zielony stats [Book1]Sheet2!(1:end); // s na 2-gi sheet w book1 stats Col(2); // s na 2-gą kolumnę akt. worksheet’u stats 1[5]:2[10]; // s na komórki w kol 1 i 2 pomiędzy 5 a 10 range aa = (1,2)!col(2)[3:5];// col(2) 1go i 2go sheet’a, wiersze 3 do 5. stats aa; Przydatne funkcje … Wygładzanie smooth iy:=Col(2) method:=1 npts:=200 iy – dane do wygładzania, method – metoda 0 - Adjacent-Averaging, 1 - Savitzky-Golay, 2 - Percentile Filter, 3 - FFT Filter oy – dane wyjściowe npts – „okno” wygładzania Przydatne funkcje … Dopasowanie typu „multi peak” fitpeaks type:=1 npeaks:=1 iy:=col(3) type – typ funkcji, 0 – Gaussa, 1 – Lorentza npeaks – ilość maksimów, iy – dane wejściowe Przydatne funkcje … Dopasowanie – obiekt nlsf (nonlinear least squares fitting) nlsf.func$ = Gauss; nlsf.cleanupfitdata(); nlsf.fitdata$ = %(1,@D); //dopasuj do pierwszego zestawu danych w warstwie nlsf.tolerance = 0; y0 = 0; xc = 0.1; w = 1; A = 1; //parametry początkowe limit %C; //nazwa aktywnego dataset’u nlsf.xBegin = limit.xmin; //wartości x nlsf.xEnd = limit.xmax; nlsf.xPoints = 1000; //liczba punktów dopasowania nlsf.fit(20); //dopasowanie, 20 iteracji Przydatne funkcje … Przykłady … Generowanie danych newbook name:="Krzywa3" option:=1; %A = Krzywa3; %B = funkcja3; wks.AddCol(temp); wks.AddCol(%B); %A_A = data(-5,5,0.05); %A_temp = %A_A - pi/3; %A_B = sin(3*%A_temp)+cos(%A_temp/2); white_noise ix:=col(2) level:=5 ox:=col(4); del col(b); del col(temp); Wygładzanie wks.addcol(smooth);//wyniki wygladzania range k1 = [Krzywa3]Sheet1!col(funkcja3); range k2 = [Krzywa3]Sheet1!col(smooth); curve.data$ = k1; curve.result$ = k2; curve.i1 = 1; curve.smoothpts = 5; curve.adjave(); lub range k1 = [Krzywa3]Sheet1!col(funkcja3); smooth iy:=k1 method:=0 npts:=7; //metody: 0 - adjave, 1 - S-G, 2 - percentage, 3 - FFT Przydatne funkcje … Obiekt curve np. metody dla operacji matematycznych curve.adjave() Wygładzanie metodą adjacent averaging (curve.result$) curve.deriv() różniczkowanie curve.FFTSmooth() Wygładzanie z użyciem metody Fourier transform curve.integrate() Całkowanie curve.SGDeriv() Różniczkowanie metodą Savitzky-Golay curve.SGSmooth() Wygładzanie z użyciem metody Savitzky-Golay Przydatne funkcje … axis_scrollbar axis – top, right, left, bottom begin - początek end – koniec skali rescale – przeskalowanie wzgl. powyższych layer – do której warstwy się odnosi np. axis_scrollbar axis:=top; axis_scrollbar begin:=5 end:=10 rescale:=1; Przydatne funkcje … expASC type – dat, txt, csv, all select – tylko zaznaczone separator – TAB, , , SPACE, itd iw – arkusz do eksportu np. 1. expASC path:="c:\signal.dat"; 2. expASC type:=2 path:="c:\signal"; 3. expASC type:=0 path:="c:\signal" select:=1 separator:=4; 4. expASC iw:=[book1]1 path:="c:\signal"; Przydatne funkcje … impASC np. 1. impASC fname:="c:\MyFix.txt"; 2. impASC; Przydatne funkcje … Origin VIs dla LabVIEW dostępne są instrumenty pomocne w komunikacji między Origin’em i LabVIEW, np OAOpenCommunication.VI – otwarcie komunikacji z Origin’em OACloseCommuniation.VI – zamknięcie OACreate.VI – utwórz Worksheet, Graph, etc. w Origin’ie W LabVIEW biblioteka Origin Automation Server.llb.