Co nowego w MATLAB - Live Editor
Wczytanie danych, stworzenie modelu, przeprowadzenie obliczeń, wyświetlenie końcowych wyników to obowiązkowe przystanki w drodze do rozwiązania dowolnego problemu obliczeniowego. MATLAB jest narzędziem, które pomaga w realizacji każdego z powyższych punktów przy pomocy tysięcy różnych funkcji. W rzeczywistości istotny jest jeszcze pewien detal – sposób, w jaki podczas realizacji zadania opisujemy jego poszczególne etapy i prezentujemy pośrednie wyniki.
Od wersji 2016a w MATLABie pojawiła się ciekawa alternatywa dla zwykłych komentarzy oraz dokumentów generowanych przez Raport Generator. Live Editor to narzędzie, które w sprytny sposób łączy nasz kod z czytelną prezentacją wyników jego działania.
Za podstawę dzisiejszego przykładu posłużą dane dotyczące budownictwa mieszkaniowego w Polsce (więcej na ten temat w MATLAB Tutorial). Tym razem pominę wstawianie fragmentów kodu (całość znajdzie się na samym końcu), w celu sensownego pokazania, o co z tym całym Live Editor chodzi, w dzisiejszym tekście będę wstawiał zrzuty ekranowe.
Jak zacząć?
Skrypt w trybie live nie jest zwykłym m-plikiem, jego rozszerzenie to .mlx W celu utworzenia nowego live skryptu należy kliknąć na przycisku New w zakładce HOME MATLABa i wybrać Live Script.
Można spokojne rozciągnąć okno edytora na cały ekran – ciągły podgląd na inne okna MATLABa nie będzie niezbędny. Tworząc nowy skrypt wypadałoby na wstępnie napisać na cóż on w ogóle postał. W tym celu Należy kliknąć w przycisk Text, co umożliwia przejście w tryb edycji opisów. Tekst można formatować na różne sposoby, tj. wyróżniać, oznaczać jako hyperlink itp. Po zakończeniu edycji sekcji można kliknąć w przycisk Section Break.
Czas na wstawienie pierwszych linii kodu. Tym razem na głównym pasku narzędzi należy wcisnąć przycisk Code co umożliwi wprowadzenie do skryptu kodu. Po zakończeniu edycji sekcji można sprawdzić, czy kod wykona się prawidłowo. Można w tym celu kliknąć prążkowaną niebieską belkę widoczną (choć dosyć słabo) z lewej strony aktywnej sekcji, bodź przycisk Run Section umieszczony na samym końcu zakładki LIVE EDITOR
Co jeśli interesują nas jakieś pośrednie wyniki? Wyświetlą się w przeznaczonej do tego sekcji widocznej po prawej stronie. Obrazy pojawiają się, gdy w kodzie użyjemy polecenia plot
lub pokrewnego, tekst pojawi się gdy użyjemy funkcji disp
lub nie postawimy średnika na końcu któregoś z wierszy (czyli dokładnie tak samo jak w przypadku wyświetlania danych w command window). Mały wykres można powiększyć klikając na niego dwukrotnie lewym przyciskiem myszy, otworzy się wtedy w nowym oknie.
Na każdym etapie pracy można zapisać Live Script jak zwykły, matlabowy m-plik. Efekt jak poniżej.
%% Analiza danych dotyczących budownictwa mieszkaniowego w Polsce % Skrypt demonstruje możliwości wykorzystania *MALTAB Live Editor* do prezentacji % wyników pracy. % % Prezentowane dane pochodzą ze strony głównego urzędu statystycznego <http://stat.gov.pl % http://stat.gov.pl> %% Przygotowanie danych % Bezpośredni adres url. url = 'http://stat.gov.pl/download/gfx/portalinformacyjny/pl/defaultaktualnosci/5478/6/3/1/mieszkania_91_16.xls'; %% Zapisanie pliku bud.xls na dysku lokalnym oraz wczytanie danych w formie macierzy do MATLABa filename = 'bud.xls'; websave(filename, url); [data, txt] = xlsread(filename); %% % W kolejnych kolumnach macierzy znalazły się dane dotyczące kumulacyjnej % liczby mieszkań oddanych do użytku dla kolejnych miesięcach roku. Wiersze stanowią % podział na lata oraz kategorie. Zebranie danych w wygodniejszej formie wymaga % przeprowadzenia kilku dodatkowych operacji. kategorie = txt(3:8, 1) %% Wyznaczenie miesięcznej liczby oddaych mieszkań i podzial na kategorie dataM = diff(data,1,2); dataM = [data(:,1) dataM]; ogolemM = dataM(2:6:end,:)'; spoldzielczeM = dataM(3:6:end,:)'; indywidualneM = dataM(4:6:end, :)'; sprzedaz_wynajemM = dataM(5:6:end,:)'; %% Konwersja macierzy na wektory ogolemV = ogolemM(:); spoldzielczeV = spoldzielczeM(:); indywidualneV = indywidualneM(:); sprzedaz_wynajemV = sprzedaz_wynajemM(:); %% Utworzenie wektora czasu odpowiadającego danym w wektorach % Punktem startowym jest styczeń 1991 roku, krok wynosi jeden miesiąc t1 = datetime(1991,1,31); dt = calendarDuration(0,1,0); N = length(spoldzielczeV); t = t1:dt:t1+(N-1)*dt; %% Wykres liczby oddanych do użytku mieszkań w latach 1991 - 2015 plot(t, ogolemV); title('Mieszkania oddane do użytku od r. 1991 - ogółem') ylabel('Liczba miesięcznie oddanych mieszkań'); grid on; plot(t, spoldzielczeV, t, indywidualneV, t, sprzedaz_wynajemV) title('Mieszkania oddane do użytku od r. 1991') legend({'spółdzielcze'; 'indywidualne'; 'sprzedaż lub wynajem'}) ylabel('Liczba miesięcznie oddanych mieszkań') grid on; %% Mieszkania ogółem - prosta regresji % Usunięcie brakujących danych. in = isnan(ogolemV); ogolem_nn = ogolemV(~in); t_nn = t(~in); N = length(ogolem_nn); %% % Wyznaczanie prostej regresji. p = polyfit(1:N, ogolem_nn', 1); N = length(ogolemV); pr = polyval(p, 1:N); %% Wykres plot(t, ogolemV, t, pr); title('Mieszkania oddane do użytku - ogółem'); ylabel('Liczba miesięcznie oddanych mieszkań'); grid on;
Matlab Live Editor to niewątpliwie ciekawy sposób na tworzenie skryptów przeznaczonych dla innych użytkowników. Tak by mogli coś z naszej pracy zrozumieć .