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;