Prezentacja wynik w w Matlabie

Transkrypt

Prezentacja wynik w w Matlabie
Laboratorium Algorytmy Obliczeniowe Lab. 9 – Prezentacja wyników w Matlabie 1. Wyświetlanie wyników na ekranie: W Matlabie możliwe są następujące sposoby wyświetlania wartości zmiennych: a. wpisując w programie nazwę zmiennej bez zakończenia linii średnikiem, np.: a=1;
a
spowoduje wyświetlenie na ekranie: a=1. b. wykorzystanie funkcji disp: Nazwę zmiennej podajemy jako argument funkcji, np.: a=1;
disp(a);
spowoduje wyświetlenie na ekranie wartości 1. W przypadku funkcji disp jest możliwe jednoczesne wyświetlenie tekstu i wartości zmiennej, jednak trzeba „pomóc” sobie funkcją num2str (dokonuje zamiany wartości liczbowej na tekst), np.: disp([‘Wartość zmiennej a wynosi: ‘ num2str(a)]);
Metoda ta nie działa w przypadku macierzy! c. wykorzystanie funkcji fprintf: Funkcja fprintf pozwala zapisywać do pliku lub wyświetlać jednocześnie tekst i wartości zmiennych. Pozycję zmiennej w tekście określamy dedykowanym ciągiem znaków specjalnych rozpoczynającym się symbolem %, np.: a=1;
fprintf(‘Wartość zmiennej a wynosi %d”, a);
spowoduje wyświetlenie na ekranie tekstu: Wartość zmiennej a wynosi 1. Możliwe jest też określenie maksymalnej liczby wyświetlanych znaków części całkowitej i ułamkowej liczby, np.: fprintf(‘%4.2f”, a);
spowoduje wyświetlenie wartości zmiennej a na maksymalnie 4 znakach części całkowitej i maksymalnie 2 znakach części ułamkowej. Znaki specjalne używane w funkcji fprintf przedstawiono w tabeli: ciąg znaków %c %d %e %f %o %s %u %x Sposób wyświetlania
pojedyncza litera lub cyfra
liczba całkowita liczba w zapisie wykładniczym, np. 3.1415e+00 zapis stałoprzecinkowy zapis w systemie ósemkowym tekst – ciąg znaków liczba całkowita bez znaku zapis w systemie szesnastkowym (HEX) 2. Zapis danych do pliku i wczytywanie wartości zmiennych z pliku W Matlabie istnieje wiele sposobów zapisu danych do pliku. Najpopularniejsze to: a. Korzystając z funkcji fopen i fprintf: fid = fopen(nazwa pliku, uprawnienia);
fprintf(fid, tekst i format zmiennych, zmienne);
fclose(fid);
Podawanie uprawnień do wykonywania operacji na pliku w funkcji fopen jest opcjonalne. Możemy wyróżnić następujące uprawnienia:  ‘r’ – odczyt z istniejącego pliku  ‘w‘ – zapis do istniejącego lub utworzonego pliku  ‘a’ – zapis z dopisywaniem do istniejącej zawartości  ‘r+’ – odczyt i zapis do istniejącego pliku  ‘w+’ –odczyt i zapis do istniejącego lub utworzonego pliku  ‘a+’ – odczyt i zapis z dopisywaniem do istniejącej zawartości istniejącego lub utworzonego pliku. Przykład: a=1; fid = fopen(‘wyniki.txt’, ‘w+’);
fprintf(fid, ‘Wartość zmiennej a wynosi %d’,a);
fclose(fid);
b. Korzystając z funkcji save: save(nazwa pliku, zmienne ,’-append’, format);
Opcjonalny argument ‘‐append’ określa że dane mają zostać dopisane na końcu pliku do istniejącej zawartości. format określa sposób zapisu pliku spośród dostępnych opcji:  ‘-mat’ – plik danych Matlaba  ‘-ascii’ – plik tekstowy z zapisem liczb na 8 znakach  ‘-ascii’, ‘-tabs’ – plik tekstowy z zapisem liczb na 8 znakach i oddzielaniem liczb tabulatorami  ‘-ascii’, ‘-double’ – plik tekstowy z zapisem liczb na 16 znakach  ‘-ascii’, ‘-double’, ‘-tabs’ – plik tekstowy z zapisem liczb na 16 znakach i oddzielaniem liczb tabulatorami Przykład: a=1;
b=2;
save(‘wyniki.txt’, ‘a’, ‘b’, ‘-ascii’);
c. Korzystając z funkcji dlmwrite: dlmwrite(nazwa pliku, zmienna ,’znak odstępu’);
Opcjonalny argument ‘znak odstępu’ określa w jaki sposób kolejne wartości są oddzielane od siebie, np. ‘\t’ oznacza tabulator. Przykład: a=1;
dlmwrite(‘wyniki.txt’, a, ’\t’);
W przypadku odczytu danych z pliku mamy odpowiednio 3 możliwości: a. Korzystając z funkcji fopen i fscanf: fid = fopen(nazwa pliku, uprawnienia);
[zmienne] = fscanf(fid, format zmiennych);
fclose(fid);
Przykład: fid = fopen(‘wyniki.txt’, ‘r’);
a = fscanf(fid, ‘%f’);
fclose(fid);
b. Korzystając z funkcji load: [zmienne] = load(nazwa pliku);
Przykład: [a,b] = load(‘wyniki.txt’);
c. Korzystając z funkcji dlmread: [zmienne] = dlmread(nazwa pliku, znak odstępu);
Przykład: a = dlmread(‘wyniki.txt’, ‘\t’); 3. Tworzenie wykresów a. Użyteczne uwagi: Przy tworzeniu wykresów przydatne mogą być następujące polecenia definiujące wygląd wykresów: figure – tworzy nowe okno wykresu, grid on/grid off – włącza/wyłącza widok siatki wartości na wykresie, hold
on/hold
off – włącza/wyłącza dopisywanie nowych wykresów do istniejących w tym samym oknie, title(‘tekst’) – dodaje tytuł wykresu, xlabel(‘tekst’), ylabel(‘tekst’) – dodają tytuły osi odpowiednio X i Y
axis([xmin, xmax, ymin, ymax]) – określa zakresy osi X i Y, legend(‘tekst1’, ‘tekst2’, …) – wyświetla legendę z opisem poszczególnych wykresów; subplot(m,n,p) – dzieli okno z wykresem na tabelę o m wierszach i n kolumnach i na pozycji p umieszcza kolejny wykres; to polecenie pozwala umieścić kilka wykresów w jednym oknie, np.:
x=0:.1:2*pi;
subplot(1,2,1);
plot(x,sin(x));
subplot(1,2,2);
plot(x,cos(x));
b. Zwykły wykres ‐ plot: plot(argument x1, argument y1, ‘definicja wyświetlania linii i
znaczników’, … )
Przykład: x = -pi:.1:pi;
y=sin(x);
plot(x,y);
Istnieją też wersje wykresów 2‐D z osiami w skali logarytmicznej: semilogx(argument
x1,
argument
y1,
‘definicja
wyświetlania
linii i znaczników’, … ) – wykres z osią X w skali logarytmicznej semilogy(argument
x1,
argument
y1,
‘definicja
wyświetlania
linii i znaczników’, … ) – wykres z osią Y w skali logarytmicznej loglog(argument x1, argument y1, ‘definicja wyświetlania linii
i znaczników’, … ) – wykres z osią X i Y w skali logarytmicznej c. Wykres słupkowy – bar: bar(argument x, argument y, ‘kolor’, … );
Przykład: x = -2.9:0.2:2.9;
bar(x,exp(-x*x),’r’);
d. Wykres kołowy – pie: pie(argument x, explode);
Przykład: x = [1 3 0.5 2.5 2];
explode = [0 1 0 0 0];
pie(x,explode);
e. Wykres konturowy – contour (argumenty są macierzami):: contour(argument
x,
argument
wyświetlania linii’, … )
y,
argument
Przykład: [X,Y] = meshgrid(-2:.2:2,-2:.2:3);
Z = X.*exp(-X.^2-Y.^2);
contour(X,Y,Z);
z,
‘definicja
f.
Wykresy 3‐D: Wykres siatkowy – mesh (argumenty są macierzami): mesh(argument X, argument Y, argument Z);
Przykład: [X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z);
Wykres powierzchniowy – surf (argumenty są macierzami): surf(argument X, argument Y, argument Z);
Przykład: [X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z);
colormap hsv;
colorbar;