MATLAB Live Editor

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.

Tworzenie 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.

LiveScript - edycja tekstu

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

LiveScript - edycja kodu

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.

LiveScript - wykresy

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ć .

(Visited 687 times, 1 visits today)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *