GNU Octave

GNU Octave jest środowiskiem obliczeń kompatybilnym z MatLabem. Poniżej kilka podstaw dotyczących analizy danych w tym środowisku (tworzenie histogramu):

# ładujemy plik z danymi
load wynik.dat

# rysowanie zwykłego wykresu (x z kolumny 1, y z kolumny 3
plot(wynik(:,1),wynik(:,3));
title("tytul wykresu");

# histogram w oparciu o próbki 1-25000 z kolumny 9
# przedział histogramowania -400000 do 400000
# pojedynczy słupek histogramu o szerokości 1000
hist(wynik(1:25000,9),-400000:1000:400000);
# opis osi 
xlabel("czas trwania [ns]");
ylabel("ilosc przypadkow");
# zapis do pliku ps
print("histogram1.ps", "-dps");

Podstawy operowania na zmiennych:

% wszystko od znaku % do końca linii to komentarz

% przypisanie wartości do zmiennej
a=2*3+1

% liczba zespolona (bez echo na ekran - zapewnia to średnik po komendzie)
% uwaga: gdy 10*i to nie zadziała jako zespolone gdy zdefiniowaliśmy zmienna i
z=a+10i;

% część rzeczywista i urojona liczby zespolonej
real (z)
imag (z)

% zmienna napisowa
l='Ala ma kota'

% wczytanie zmiennej z klawiatury
x=input('napisz: ');

% macierz losowa o wymiarach  2x3 (2 wiersze 3 kolumny)
m=rand(2,3);

% wyświetlenie
disp(m)
disp(sprintf('To %d', real (z)))

% informacje o zmiennych
who
whos

% kasowanie zmiennych
clear m
clear

% czyszczenie ekranu ...
clc

Podstawy operowania na macierzach:

% macierz z zerami o wymiarach 5x3
m=zeros(5,3)

% macierz wypełniona jedynkami
m=ones(4);

% macierz losowa o rozkładzie normalnym
m=randn(4)

% jawna deklaracja zawartości macierzy 
m=[1,2,3;4 5 6]

% macierz z elementami podniesionymi do kwadratu
m .* m 
m.^2

% macierz transponowana
m'

% cala 2 kolumna
m(:,2)
% cały pierwszy wiersz
m(1,:)
% drugi wiersz, kolumny 2 i 3
m(2,2:3)

max(m) % wektor z maksymalnymi wartościami z kolumn
max(max(m)) % == max(m(:))

% podobnie min i sum

% wybór w oparciu o warunek
find(e>3)

% macierz logiczna na podstawie warunku i macierzy
c = (e>3)

% macierz pustawa ...
f = sparse ([4,5], [6,6], [2,3]) % w 6 kolumnie w wierszu 4 wartość 2 a w 5 wartość 3
full(f) % pełne wypisanie macierzy f - z zerami
  • tworzenie macierzy diagonalnej - diag
  • górny/dolny trójkąt z macierzy - tril / triu
  • ślad macierzy - trace
  • wyznacznik macierzy - det
  • odwrócenie macierzy - inv

Pętle i instrukcje warunkowe:

x =0;
% while
while x<5
	x = x+1;
end


% for
for x=-5:0.1:2
	a=x^2
end

% mamy break i return ...

% if
if x<5
	a=1
else if x<8
	a=2
else
	a=3
end

% switch
switch x
	case 1
		a=2
	case 3
		a=1
	otherwise
		a=0
end

Obsługa plików binarnych:

plik = fopen("'nazwa', 'rb')
autor =fread(plik,80,'char')
char(autor)
cahr(autor(1)) ...
dzien=fread(plki,1,'int')

% aby cofnąć / przejść do przodu (o 20):

fseek(plik,20,0)

pomiar=fread(plik,1000,'int')

Inne przydatne informacje:

  • pomoc na temat funkcji f - help f
  • deklarowanie funkcji - funkcje stanowią pliki .m, wszystkie komentarze do pierwszej pustej linii stanowią dokumentację (treść pomocy), można dodatkowo skorzystać z konstrukcji function [suma,iloczyn] = zad_30licz(n1, n2, plik) aby zadeklarować wektor wyjściowy oraz argumenty funkcji
  • deklarowanie funkcji ("inline") - suma = @(x,y) x+y;
  • znajdowanie minimów funkcji sin(x) dla zakresu od 0 do 3 - fminbnd('sin(x)', 0, 3)
  • znajdowanie miejsca zerowego funkcji, szukanie zaczynamy od 5- fzero('sin(x)', 5)
  • znajdowanie miejsc zerowych wielomianu - p=[-3,0,1,0,-1]; roots(p); % -3x^4 + x^2 - 1
  • suma elementów wektora w - sum(w)
  • iloczyn elementów wektora w - prod(w)
  • średnia elementów wektora w - mean(w)
  • odchylenie standardowe elementów wektora w - std(w)
  • interpolacja - interp1
  • aproksymacja (wielomianowa) - polyfit() oraz polyval()
  • eliminacja Gaussa - lu()
  • pomiar czasu - wyzerowanie i włączenie stopera - tic
  • pomiar czasu - wypisanie wartości stopera - toc

Zobacz w Sieci: Matlab @ FUW



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/programing/more/octave) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2015-09-29 20:05:56 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).