{"id":399,"date":"2016-01-22T14:00:55","date_gmt":"2016-01-22T14:00:55","guid":{"rendered":"http:\/\/matlablog.ont.com.pl\/?p=399"},"modified":"2016-02-29T10:22:58","modified_gmt":"2016-02-29T10:22:58","slug":"matlab-tutorial-7","status":"publish","type":"post","link":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/","title":{"rendered":"MATLAB Tutorial #7"},"content":{"rendered":"\n<!-- Facebook Like Button Vivacity Infotech BEGIN -->\n<div class=\"fb-like\" data-href=\"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/\" data-layout=\"standard\" data-action=\"like\" data-show-faces=\"false\" data-size=\"large\" data-width=\"450\" data-share=\"1\" ><\/div>\n<!-- Facebook Like Button Vivacity Infotech END -->\n<h3><span style=\"color: #000080;\">Tworzenie skrypt\u00f3w<\/span><\/h3>\n<p style=\"text-align: justify;\">W zasadzie, do tej pory na ka\u017cdym kroku podkre\u015bla\u0142em, \u017ce MATLAB nie powinien by\u0107 postrzegany wy\u0142\u0105cznie jako j\u0119zyk programowania. Jest to przede wszystkim \u015brodowisko obliczeniowe, w uproszczeniu mo\u017cna nawet powiedzie\u0107: rozbudowany kalkulator. Niemniej jednak, wraz z rosn\u0105c\u0105 z\u0142o\u017cono\u015bci\u0105 problem\u00f3w obliczeniowych, przed jakimi stajemy, zmiana podej\u015bcia do programu jest nieunikniona. Realizuj\u0105c poprzedni\u0105 cz\u0119\u015b\u0107 poradnika stworzy\u0142e\u015b procedur\u0119, kt\u00f3ra w oparciu o wej\u015bciowe dane umo\u017cliwi\u0142a wy\u015bwietlenie wykresu przedstawiaj\u0105cego miesi\u0119czn\u0105 liczb\u0119 oddanych do u\u017cytku mieszka\u0144 poczynaj\u0105c od roku 1991 po dzie\u0144 dzisiejszy. Do tego dosz\u0142o poszukiwanie miesi\u0105ca, dla kt\u00f3rego liczba mieszka\u0144 osi\u0105gn\u0119\u0142a maksimum oraz wszystkich nietypowych miesi\u0119cy, gdy liczba oddanych do u\u017cytku mieszka\u0144 przekroczy\u0142a dowolnie wskazany poziom. Zrealizowanie tego wymaga\u0142o wpisania kilkunastu linii kodu. Nie jest to zbyt du\u017co i obiektywnie na to patrz\u0105c, stworzenie tego kodu nie by\u0142o trudne. Jednak, je\u015bli przysz\u0142oby nam wykona\u0107 identyczn\u0105 analiz\u0119, ale ograniczon\u0105 np. wy\u0142\u0105cznie do mieszka\u0144 \u201esp\u00f3\u0142dzielczych\u201d, znaczn\u0105 cz\u0119\u015b\u0107 kodu nale\u017ca\u0142oby wpisa\u0107 ponownie Cho\u0107 wymagane modyfikacje kodu s\u0105 niewielkie, wklepywanie niemal\u017ce wszystkiego od pocz\u0105tku w wierszu polece\u0144, to ewidentnie strata czasu. Na tym etapie warto si\u0119gn\u0105\u0107 po narz\u0119dzie, jakim jest skrypt.<br \/>\n<!--more--><\/p>\n<p style=\"text-align: justify;\">Czym jest skrypt? W MATLABie jest to plik z rozszerzeniem <em>.m<\/em>, w kt\u00f3rym zapisany zosta\u0142 szereg procedur wykonanych jedna po drugiej. Skrypt mo\u017cna utworzy\u0107 na wiele r\u00f3\u017cnych sposob\u00f3w. Na pewno rzuca si\u0119 w oczy przycisk <strong>New Script<\/strong> widoczny na pasku narz\u0119dzi HOME. Mo\u017cna r\u00f3wnie\u017c klikn\u0105\u0107 w przycisk <strong>New <\/strong>i wybra\u0107 opcje <em>Script <\/em>z menu. Je\u015bli od razu chcemy wskaza\u0107 miejsce na dysku, gdzie ma zosta\u0107 zapisany m-plik, nale\u017cy skorzysta\u0107 z okna <strong>Current Folder<\/strong>. Po klikni\u0119ciu na pustej przestrzeni okna prawym przyciskiem myszy wybieramy opcj\u0119 <em>New File -&gt; Script<\/em>. Jak wi\u0119kszo\u015b\u0107 rzeczy w MATLABie, zadanie tworzenia nowego skryptu mo\u017cna wykona\u0107 r\u00f3wnie\u017c z poziomu <strong>Command Widnow<\/strong> - wystarczy wpisa\u0107 polecenie <code>edit <\/code><\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-400\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png\" alt=\"Tworzenie skryptu\" width=\"1009\" height=\"622\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png 1009w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu-300x185.png 300w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu-768x473.png 768w\" sizes=\"auto, (max-width: 1009px) 100vw, 1009px\" \/><\/p>\n<ul>\n<li style=\"padding-left: 30px;\">Korzystaj\u0105c z dowolnej metody utw\u00f3rz nowy skrypt.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u00a0 Domy\u015blnie, skrypt otwiera si\u0119 w nowym oknie. Je\u015bli podczas pracy skrypt gdzie\u015b \u201ezniknie\u201d, sprawd\u017a, czy okno ze skryptem nie schowa\u0142o si\u0119 przypadkiem pod g\u0142\u00f3wnym oknem MATLABa<\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-404\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/schowane_okno.png\" alt=\"schowane okno\" width=\"837\" height=\"224\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/schowane_okno.png 837w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/schowane_okno-300x80.png 300w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/schowane_okno-768x206.png 768w\" sizes=\"auto, (max-width: 837px) 100vw, 837px\" \/><\/p>\n<p style=\"text-align: justify;\">Polecenia wpisywane w skrypcie mog\u0105 by\u0107 takie same jak te, kt\u00f3re wpisujemy w <strong>Command Window<\/strong>. Widoczna r\u00f3\u017cnica jest taka, \u017ce podczas uzupe\u0142niania skryptu po wci\u015bni\u0119ciu klawisza <strong>Enter<\/strong>, poza przej\u015bciem do nowej linii, nic si\u0119 nie dzieje \u2013 polecenie nie jest wykonywane.<\/p>\n<ul>\n<li style=\"padding-left: 30px;\">Uzupe\u0142ni skrypt wpisuj\u0105c przyk\u0142adowy kod:<\/li>\n<\/ul>\n<pre class=\"brush: matlabkey; title: ; notranslate\" title=\"\">\r\nT = 1; %czas obserwacji\r\ndt = 0.1;\r\nt = 0:dt:T-dt;\r\nx = sin(2*pi*t);\r\nplot(t, x);\r\nxlabel('czas &#x5B;s]');\r\ntitle('x = sin(2\\pit)') % ci\u0105g znak\u00f3w \\pi zostanie wy\u015bwie-tlony jako... pi\r\n<\/pre>\n<p style=\"text-align: justify;\">Jednym ze sposob\u00f3w na wywo\u0142anie instrukcji zebranych w skrypcie, jest wci\u015bni\u0119cie zielonego przycisku <strong>Run <\/strong>widocznego na pasku narz\u0119dzi w zak\u0142adce EDITOR. Przed uruchomieniem skryptu niezb\u0119dne jest zapisanie go na dysku w formie m-pliku. Je\u015bli skrypt nie zosta\u0142 jeszcze zapisany, to przy pierwszej pr\u00f3bie uruchomienia pojawi si\u0119 odpowiednie okno zapisu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-401\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/nowy_skrypt.png\" alt=\"uruchomienie srkyptu\" width=\"1054\" height=\"156\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/nowy_skrypt.png 1054w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/nowy_skrypt-300x44.png 300w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/nowy_skrypt-768x114.png 768w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/nowy_skrypt-1024x152.png 1024w\" sizes=\"auto, (max-width: 1054px) 100vw, 1054px\" \/><\/p>\n<ul>\n<li style=\"text-align: justify; padding-left: 30px;\">Zapisz skrypt po nazw\u0105\u00a0<em>testowy<\/em> w katalogu roboczym MATLABa (czyli w katalogu domy\u015blnym)<\/li>\n<li style=\"text-align: justify; padding-left: 30px;\">Wci\u015bnij przycisk <strong>Run<\/strong><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-402\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/sinus_szarpany.png\" alt=\"sinusz szarpany\" width=\"562\" height=\"506\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/sinus_szarpany.png 562w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/sinus_szarpany-300x270.png 300w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/p>\n<p style=\"text-align: justify;\">Wygenerowany wykres nie wygl\u0105da najlepiej. Krok <strong>dt<\/strong> okaza\u0142 si\u0119 zbyt ma\u0142y, lecz poprawa tego stanu rzeczy jest teraz trywialnie prosta.<\/p>\n<ul>\n<li style=\"text-align: justify; padding-left: 30px;\">Edytuj\u0105c skrypt <em>testowy.m<\/em> zmie\u0144 warto\u015b\u0107 przypisywan\u0105 do zmiennej <strong>dt <\/strong>na <strong>0.01 <\/strong>oraz zwi\u0119ksz czas obserwacji <strong>T <\/strong>do <strong>2 <\/strong>sekund<\/li>\n<li style=\"text-align: justify; padding-left: 30px;\">Uruchom ponownie skrypt<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-403\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/sinus_gladki.png\" alt=\"sinus g\u0142adki\" width=\"562\" height=\"506\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/sinus_gladki.png 562w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/sinus_gladki-300x270.png 300w\" sizes=\"auto, (max-width: 562px) 100vw, 562px\" \/><\/p>\n<p style=\"text-align: justify;\">Dzi\u0119ki temu, \u017ce wszystkie niezb\u0119dne do wygenerowania sygna\u0142u i utworzenia wykresu instrukcje zebrane by\u0142y w skrypcie, modyfikacja procedury mo\u017ce odby\u0107 si\u0119 b\u0142yskawicznie. Kolejn\u0105 olbrzymi\u0105 zalet\u0105 skrypt\u00f3w jest to, \u017ce ich zawarto\u015b\u0107 nie ulatnia si\u0119 po zako\u0144czeniu sesji z MATLABem. Raz zapisany skrypt pozostaje na dysku i mo\u017cemy go ponownie otworzy\u0107 od edycji. W tym celu nale\u017cy skorzysta\u0107 z przycisku <strong>Open <\/strong>widocznego na pasku narz\u0119dzi w zak\u0142adce HOME lub, pro\u015bciej, klikn\u0105\u0107 dwukrotnie lewym przyciskiem myszy na pliku w oknie <strong>Current Folder<\/strong>. Alternatywnie, plik mo\u017cemy otworzy\u0107 wpisuj\u0105c polecenie<\/p>\n<pre class=\"brush: matlabkey; title: ; notranslate\" title=\"\">\r\nedit nazwa_pliku\r\n<\/pre>\n<p style=\"text-align: justify;\">Je\u015bli plik o podanej nazwie nie istnieje, zostanie utworzony, je\u015bli jest ju\u017c obecny na dysku, zostanie otworzony do edycji.<br \/>\nWywo\u0142anie przygotowanej w skrypcie procedury nie wymaga otwarcia pliku do edycji. Wystarczy, \u017ce w <strong>Command Window <\/strong>podamy nazw\u0119 skryptu (bez rozszerzenia <em>.m<\/em>)<\/p>\n<ul>\n<li style=\"padding-left: 30px;\">Ponownie wywo\u0142aj skrypt testowy wpisuj\u0105c jego nazw\u0119 w Command Window<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\u00a0 Teraz, gdy wiesz ju\u017c jak tworzy\u0107 skrypty, praca z MATLABem stanie si\u0119 jeszcze prostsza. Nie oznacza to jednak, \u017ce bezpo\u015brednie wpisywanie procedur w <strong>Command Window <\/strong>straci\u0142o kompletnie sens. W zasadzie, czasem nawet wygodniej jest w pierwszej kolejno\u015bci poeksperymentowa\u0107 sobie z danymi w tym trybie. To, czy zacz\u0105\u0107 prac\u0119 z wierszem polece\u0144, czy te\u017c od razu przej\u015b\u0107 do tworzenia skryptu, jest kwesti\u0105 indywidualnych preferencji. Zreszt\u0105, je\u015bli wpisujemy co\u015b w command window, MATLAB zapisuje to w swojej historii. Mo\u017cemy to nawet zr\u0119cznie wykorzysta\u0107.<\/p>\n<ul>\n<li style=\"text-align: justify; padding-left: 30px;\">Korzystaj\u0105c z przycisku <strong>Layout <\/strong>uaktywnij okno historii polece\u0144 <em>Layout -&gt; Command History -&gt; Docked<\/em><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Mo\u017cesz teraz zaznaczy\u0107 kilka interesuj\u0105cych ci\u0119 polece\u0144 (korzystaj\u0105c z kombinacji klawisza alt + LPM), klikn\u0105\u0107 nast\u0119pnie PPM i wybra\u0107 opcje <em>Create Script<\/em><\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-406\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/skrypt_z_historii.png\" alt=\"historia polece\u0144\" width=\"333\" height=\"315\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/skrypt_z_historii.png 333w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/skrypt_z_historii-300x284.png 300w\" sizes=\"auto, (max-width: 333px) 100vw, 333px\" \/><\/p>\n<p style=\"text-align: justify;\">Je\u015bli nie min\u0119\u0142o wiele czasu od momentu, w kt\u00f3rym przerabia\u0142e\u015b poprzedni rozdzia\u0142 tego poradnika, zapewne z \u0142atwo\u015bci\u0105 mo\u017cesz odszuka\u0107 polecenia wykorzystane w <a href=\"http:\/\/matlablog.ont.com.pl\/matlab-tutorial-6\/\">MATLAB Tutorial #6<\/a> i na ich podstawie stworzy\u0107 skrypt. Mo\u017cesz te\u017c wykorzysta\u0107 gotowca przedstawionego poni\u017cej, co zapewne b\u0119dzie nieco mniej frustruj\u0105ce. W ka\u017cdym razie, utw\u00f3rz skrypt, wype\u0142nij go zawarto\u015bci\u0105 i zapisz jako <em>budownictwo_analiza.<\/em><\/p>\n<pre class=\"brush: matlabkey; title: ; notranslate\" title=\"\">\r\nload bud\r\nogolemM = BMdaneM(2:6:end,:)'; % wybranie danych i transpozycja (operator - apostrof)\r\nogolemV = ogolemM(:); % konwersja na wektor\r\nt1 = datetime(1991,1,31);\r\ndt = calendarDuration(0,1,0);\r\nN = length(ogolemV); % zapisanie informacji o d\u0142ugo\u015bci wek-tora\r\nt = t1:dt:t1+(N-1)*dt;\r\nplot(t, ogolemV);\r\n<\/pre>\n<p style=\"text-align: justify;\">Zanim przejdziemy dalej, mam dla ciebie jeszcze jedn\u0105 wskaz\u00f3wk\u0119 techniczn\u0105. Domy\u015blnie, edytor otwiera si\u0119 w nowym oknie. Jest to na pewno wygodnie rozwi\u0105zanie, je\u015bli pracujemy na dw\u00f3ch niezale\u017cnych monitorach lub na jednym naprawd\u0119 du\u017cym, na kt\u00f3rym mo\u017cemy wygodnie poustawia\u0107 okna obok siebie. Gorzej, je\u015bli miejsca jest ma\u0142o i MATLAB otwarty jest w trybie pe\u0142noekranowym. W takim wypadku okno edytora b\u0119dzie zazwyczaj gubi\u0142o si\u0119 pod g\u0142\u00f3wnym oknem programu. Rozwi\u0105zaniem jest zadokowanie okna edytora do g\u0142\u00f3wnego okna MATLABa. Mo\u017cna to zrobi\u0107 klikaj\u0105c na ma\u0142\u0105 ikon\u0119 w prawej g\u00f3rnej cz\u0119\u015bci okna edytora i wybieraj\u0105c opcj\u0119 <em>Dock Editor<\/em>. Zadokowane okno mo\u017cna oczywi\u015bcie r\u00f3wnie\u017c dostosowa\u0107 do swoich potrzeb. Zak\u0142adki widoczne dotychczas w g\u00f3rnej cz\u0119\u015bci okna Edytora trafi\u0142y do zbioru zak\u0142adek g\u0142\u00f3wnego okna MATLABa.<\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-407\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/dock_editor.png\" alt=\"dokowanie okna edytora\" width=\"1200\" height=\"600\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/dock_editor.png 1200w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/dock_editor-300x150.png 300w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/dock_editor-768x384.png 768w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/dock_editor-1024x512.png 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p style=\"text-align: justify;\">Wracaj\u0105c do naszego nowego skryptu budownictwo_analiza, zajmiemy si\u0119 teraz jego modyfikacj\u0105. Analiz\u0119 nale\u017cy teraz przeprowadzi\u0107 dla dw\u00f3ch indywidualnych grup mieszka\u0144: oznaczonych jako sp\u00f3\u0142dzielcze oraz indywidualne.<\/p>\n<ul>\n<li style=\"text-align: justify; padding-left: 30px;\">Zmodyfikuj skrypt budownictwo_analiza tak, by zamiast mieszka\u0144 og\u00f3\u0142em na wykresie znalaz\u0142y si\u0119 dwa przebiegi: dla mieszka\u0144 \"sp\u00f3\u0142dzielczych\" i \u201eindywidualnych\u201d.<\/li>\n<li style=\"text-align: justify; padding-left: 30px;\">Postaraj si\u0119 umie\u015bci\u0107 w kodzie jak najwi\u0119cej komentarzy.<\/li>\n<\/ul>\n<pre class=\"brush: matlabkey; title: ; notranslate\" title=\"\">\r\nload bud % wczytanie danych z mat-pliku\r\nspoldzielczeM = BMdaneM(3:6:end,:)'; % wybranie danych i transpozycja (apostrof)\r\nspoldzielczeV = spoldzielczeM(:); % konwersja na wektor\r\nt1 = datetime(1991,1,31); % okre\u015blenie punktu startowego\r\ndt = calendarDuration(0,1,0); %krok - jeden miesi\u0105c\r\nN = length(spoldzielczeV); % wyliczenie d\u0142ugo\u015bci wektora\r\nt = t1:dt:t1+(N-1)*dt; % tworzenie wektora czasu\r\nindywidualneM = BMdaneM(4:6:end, :)';\r\nindywidualneV = indywidualneM(:);\r\n% nie ma potrzeby ponownego tworzenia wektora czasu!\r\n\r\n% wykres\r\nplot(t, spoldzielczeV, t, indywidualneV)\r\ntitle('Mieszkania oddane do u\u017cytku od r. 1991')\r\nlegend({'sp\u00f3\u0142dzielcze'; 'indywidualne'})\r\ngrid on\r\n<\/pre>\n<p style=\"text-align: justify;\">Z komentarzami zetkn\u0105\u0142e\u015b si\u0119 ju\u017c we wcze\u015bniejszych wpisach. To tekst umieszczony za znakiem <span style=\"color: #008000;\">%<\/span>, kt\u00f3ry nie jest w \u017caden spos\u00f3b interpretowany przez MATLABa podczas wykonywania polecenia. Komentarze s\u0142u\u017c\u0105 u\u017cytkownikom jako wskaz\u00f3wki, czego dotyczy dany fragment kodu i dobrze jest wyrobi\u0107 sobie nawyk ich tworzenia. Patrz\u0105c na kr\u00f3tkie fragmenty dotychczasowego kodu mog\u0142e\u015b doj\u015b\u0107 do wniosku, \u017ce wszystko jest na tyle jasne, \u017ce komentarze s\u0105 zb\u0119dne. To niestety mylne wra\u017cenie. Je\u015bli przyjdzie ci kiedy\u015b tworzy\u0107 skrypt z kilkudziesi\u0119cioma liniami kodu, to nawet jedna d\u0142u\u017csza przerwa na kaw\u0119 wystarczy, by\u015b po powrocie przed ekran komputera by\u0142 zmuszony zaj\u0105\u0107 si\u0119 dedukcj\u0105, o co w tym Twoim \u201edziele\u201d chodzi. Je\u015bli wr\u00f3cisz do swojego niekomentowanego kodu po dwumiesi\u0119cznej przerwie, to gwarantuj\u0119, \u017ce przy pr\u00f3bie zrozumienia zawi\u0142o\u015bci algorytmu b\u0119dziesz mia\u0142 ochot\u0119 uderzy\u0107 autora pi\u0119\u015bci\u0105 w nos. Komentowanie, co jest niezale\u017cne od \u015brodowiska programistycznego, w kt\u00f3rym przyjdzie Ci pracowa\u0107, pozwala oszcz\u0119dzi\u0107 sobie frustracji. Komentowanie w MATLAbie niesie za sob\u0105 dodatkowe korzy\u015bci.<\/p>\n<p style=\"text-align: justify;\">Przede wszystkim, wstawienie w nowej linii skryptu podw\u00f3jnego znaku % (czyli %%) sprawia, \u017ce skrypt dzielony zostaje na sekcje.<\/p>\n<ul>\n<li style=\"padding-left: 30px;\">Utw\u00f3rz nowy skrypt, <em>analiza_budownictwo_sec<\/em>, i uzupe\u0142nij go poni\u017cszym kodem.<\/li>\n<\/ul>\n<pre class=\"brush: matlabkey; title: ; notranslate\" title=\"\">\r\n%% Wczytanie danych z mat-pliku\r\nload bud \r\n%% Wyb\u00f3r danych - budownictwo sp\u00f3\u0142dzielcze i indywidualne\r\nspoldzielczeM = BMdaneM(3:6:end,:)'; \r\nindywidualneM = BMdaneM(4:6:end, :)';\r\n% konwersja macierzy na wektory\r\nspoldzielczeV = spoldzielczeM(:);\r\nindywidualneV = indywidualneM(:);\r\n%% Utworzenie wektora czasu \r\nt1 = datetime(1991,1,31); % okre\u015blenie punktu startowego\r\ndt = calendarDuration(0,1,0); % okre\u015blenie kroku - jeden miesi\u0105c\r\nN = length(spoldzielczeV); % wyznaczenie d\u0142ugo\u015bci wektora\r\nt = t1:dt:t1+(N-1)*dt; % stworzenie wektora czasu\r\n%% Tworzenie wykresu\r\nplot(t, spoldzielczeV, t, indywidualneV)\r\ntitle('Mieszkania oddane do u\u017cytku od r. 1991')\r\nlegend({'sp\u00f3\u0142dzielcze'; 'indywidualne'})\r\nylabel('ilo\u015b\u0107 miesi\u0119cznie oddanych mieszka\u0144')\r\ngrid on;\r\n<\/pre>\n<p style=\"text-align: justify;\">Zwr\u00f3\u0107 uwag\u0119, \u017ce po klikni\u0119ciu na obszar w skrypcie znajduj\u0105cy si\u0119 pomi\u0119dzy liniami rozpoczynaj\u0105cymi si\u0119 od znak\u00f3w %%, zostaje on pod\u015bwietlony. Je\u015bli przygl\u0105dniesz si\u0119 zawarto\u015bci zak\u0142adki EDITOR, to zauwa\u017cysz, \u017ce po prawej stronie od przycisku\u00a0<strong>Run<\/strong> znajduje si\u0119 jeszcze kilka innych przycisk\u00f3w z ikonk\u0105 wskazuj\u0105c\u0105, \u017ce one r\u00f3wnie\u017c \u201eco\u015b\u201d uruchamiaj\u0105. Interesuj\u0105 nas w tym momencie dwa z tych przycisk\u00f3w. Mniejszy,\u00a0<strong>Run Section,<\/strong> pozwala na wykonanie aktualnie pod\u015bwietlonej sekcji kodu. <strong>Run and Advance<\/strong> z kolei wykonuje kod z zaznaczonej sekcji i pod\u015bwietla kolejn\u0105 sekcj\u0119 znajduj\u0105c\u0105 si\u0119 w skrypcie. Ten drugi przycisk jest wi\u0119kszy, bo w\u0142a\u015bnie z niego najcz\u0119\u015bciej korzystamy. Podzia\u0142, a nast\u0119pnie wykonywanie skryptu kawa\u0142kami pozwala u\u017cytkownikowi na lepsze zarz\u0105dzenie procesem wykonywania skryptu, a tak\u017ce jest podstawowym sposobem wyszukiwania i poprawiania b\u0142\u0119d\u00f3w (cho\u0107 nie jest to tryb debugowania, o nim b\u0119dzie jeszcze p\u00f3\u017aniej).<\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-409\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/zakladka_EDIT.png\" alt=\"zak\u0142adka EDIT\" width=\"774\" height=\"151\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/zakladka_EDIT.png 774w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/zakladka_EDIT-300x59.png 300w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/zakladka_EDIT-768x150.png 768w\" sizes=\"auto, (max-width: 774px) 100vw, 774px\" \/><\/p>\n<p style=\"text-align: justify;\">Na koniec bonus. Dobrze opisany i podzielony na sekcje skrypt mo\u017ce pos\u0142u\u017cy\u0107 nam do automatycznego wygenerowania raportu z przeprowadzonych oblicze\u0144. W celu uzyskania raportu, nale\u017cy przej\u015b\u0107 do zak\u0142adki PUBLISH i wcisn\u0105\u0107 przycisk <strong>Publish<\/strong>. Spowoduje to wykonanie si\u0119 kodu zawartego w skrypcie oraz stworzenie raportu, domy\u015blnie w formacie HTML, Klikaj\u0105c na ma\u0142\u0105 strza\u0142eczk\u0119 pod przyciskiem <strong>Publish<\/strong> mo\u017cemy zmieni\u0107 kilka ustawie\u0144 zwi\u0105zanych z tym, w jaki spos\u00f3b raport jest generowany, w\u0142\u0105czaj\u0105c w to format pliku wyj\u015bciowego.<\/p>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-410\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/zakladka_Publish.png\" alt=\"publish - opcje\" width=\"708\" height=\"127\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/zakladka_Publish.png 708w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/zakladka_Publish-300x54.png 300w\" sizes=\"auto, (max-width: 708px) 100vw, 708px\" \/><\/p>\n<p style=\"text-align: justify;\">Raport mo\u017ce by\u0107 tworzony w formatach html, pdf, word i innych. Liczne przyciski, widoczne po lewej stronie przycisku Publish, pozwalaj\u0105 uzyska\u0107 podpowied\u017a, w jaki spos\u00f3b nale\u017cy formatowa\u0107 tekst wpisany w komentarzu, by w raporcie uzyska\u0107 efekt taki jak kursywa, pogrubienie czy wypunktowanie. Je\u015bli pod nazw\u0105 sekcji umie\u015bcimy \u201ezwyk\u0142y\u201d komentarz (tzn. lini\u0119 rozpoczniemy od pojedynczego znaku %), to w raporcie tekst ten pojawi si\u0119 w formie zwyk\u0142ego opisu. Wszelkie p\u00f3\u017aniejsze komentarze pojawiaj\u0105ce si\u0119 w sekcji zostan\u0105 w raporcie przedstawione w oryginalniej formie komentarza.<\/p>\n<pre class=\"brush: matlabkey; title: ; notranslate\" title=\"\">\r\n%% \r\n% M - plik demontruj\u0105cy mo\u017cliwo\u015bci generowania prostych raport\u00f3w z oblicze\u0144\r\n% w \u015brodowisku MATLAB\r\n%% Wczytanie danych z mat-pliku\r\nload bud \r\n\r\n%% Wyb\u00f3r danych \r\n% Z zestawu danych wybrane zostaj\u0105 dane dotycz\u0105ce budownictwa\r\n%%\r\n% \r\n% * sp\u00f3dzielczego\r\n% * indywidualnego\r\n% \r\n\r\nspoldzielczeM = BMdaneM(3:6:end,:)'; \r\nindywidualneM = BMdaneM(4:6:end, :)';\r\n% konwersja macierzy na wektory\r\nspoldzielczeV = spoldzielczeM(:);\r\nindywidualneV = indywidualneM(:);\r\n\r\n%% Utworzenie wektora czasu odpowiadaj\u0105cego analizowanym danym \r\n% Wektor czasu jest tworzony z wykorzystaniem dedykowanego tupy danych |datetime|\r\n\r\nt1 = datetime(1991,1,31); % okre\u015blenie punktu startowego\r\ndt = calendarDuration(0,1,0); % okre\u015blenie kroku - jeden miesi\u0105c\r\nN = length(spoldzielczeV); % wyznaczenie d\u0142ugo\u015bci wektora\r\nt = t1:dt:t1+(N-1)*dt; % stworzenie wektora czasu\r\n\r\n%% Tworzenie wykresu\r\nplot(t, spoldzielczeV, t, indywidualneV)\r\ntitle('Mieszkania oddane do u\u017cytku od r. 1991')\r\nlegend({'sp\u00f3\u0142dzielcze'; 'indywidualne'})\r\nylabel('ilo\u015b\u0107 miesi\u0119cznie oddanych mieszka\u0144')\r\ngrid on;\r\n\r\n%% Poszukiwanie warto\u015bci maksymalnych\r\n\r\n&#x5B;ind_max, ind_idx] = max(indywidualneV);\r\n&#x5B;spol_max, spol_idx] = max(spoldzielczeV);\r\n% Wyswietlenie komunikat\u00f3w\r\ndisp('Najw\u0119cej mieszka\u0144 w kategorii indywidualne oddano do u\u017cytku:');\r\ndisp(t(ind_idx))\r\ndisp('Najw\u0119cej mieszka\u0144 w kategorii spoldzielcze oddano do u\u017cytku:');\r\ndisp(t(spol_idx))\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-412\" src=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/raport.png\" alt=\"MATLAB Publish\" width=\"788\" height=\"824\" srcset=\"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/raport.png 788w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/raport-287x300.png 287w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/raport-768x803.png 768w, https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/raport-300x314.png 300w\" sizes=\"auto, (max-width: 788px) 100vw, 788px\" \/><\/p>\n\n<!-- Facebook Like Button Vivacity Infotech BEGIN -->\n<div class=\"fb-like\" data-href=\"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/\" data-layout=\"standard\" data-action=\"like\" data-show-faces=\"false\" data-size=\"large\" data-width=\"450\" data-share=\"1\" ><\/div>\n<!-- Facebook Like Button Vivacity Infotech END -->\n","protected":false},"excerpt":{"rendered":"<p>Tworzenie skrypt\u00f3w W zasadzie, do tej pory na ka\u017cdym kroku podkre\u015bla\u0142em, \u017ce MATLAB nie powinien by\u0107 postrzegany wy\u0142\u0105cznie jako j\u0119zyk programowania. Jest to przede wszystkim \u015brodowisko obliczeniowe, w uproszczeniu mo\u017cna nawet powiedzie\u0107: rozbudowany kalkulator. Niemniej jednak, wraz z rosn\u0105c\u0105 z\u0142o\u017cono\u015bci\u0105 problem\u00f3w obliczeniowych, przed jakimi stajemy, zmiana podej\u015bcia do programu jest nieunikniona. Realizuj\u0105c poprzedni\u0105 cz\u0119\u015b\u0107 poradnika &hellip; <a href=\"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/\" class=\"more-link\">Czytaj dalej <span class=\"screen-reader-text\">MATLAB Tutorial #7<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-399","post","type-post","status-publish","format-standard","hentry","category-matlabtutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MATLAB Tutorial #7 - Matlablog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MATLAB Tutorial #7 - Matlablog\" \/>\n<meta property=\"og:description\" content=\"Tworzenie skrypt\u00f3w W zasadzie, do tej pory na ka\u017cdym kroku podkre\u015bla\u0142em, \u017ce MATLAB nie powinien by\u0107 postrzegany wy\u0142\u0105cznie jako j\u0119zyk programowania. Jest to przede wszystkim \u015brodowisko obliczeniowe, w uproszczeniu mo\u017cna nawet powiedzie\u0107: rozbudowany kalkulator. Niemniej jednak, wraz z rosn\u0105c\u0105 z\u0142o\u017cono\u015bci\u0105 problem\u00f3w obliczeniowych, przed jakimi stajemy, zmiana podej\u015bcia do programu jest nieunikniona. Realizuj\u0105c poprzedni\u0105 cz\u0119\u015b\u0107 poradnika &hellip; Czytaj dalej MATLAB Tutorial #7 &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/\" \/>\n<meta property=\"og:site_name\" content=\"Matlablog\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-22T14:00:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-02-29T10:22:58+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png\" \/>\n<meta name=\"author\" content=\"Mi\u0142osz Augusty\u0144ski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Napisane przez\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mi\u0142osz Augusty\u0144ski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/\"},\"author\":{\"name\":\"Mi\u0142osz Augusty\u0144ski\",\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/#\\\/schema\\\/person\\\/cb112c6a320adbb23ec75684b9c1ab0e\"},\"headline\":\"MATLAB Tutorial #7\",\"datePublished\":\"2016-01-22T14:00:55+00:00\",\"dateModified\":\"2016-02-29T10:22:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/\"},\"wordCount\":2141,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/matlablog.ont.com.pl\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/tworzenie_sryptu.png\",\"articleSection\":[\"MATLAB Tutorial\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/\",\"url\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/\",\"name\":\"MATLAB Tutorial #7 - Matlablog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/matlablog.ont.com.pl\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/tworzenie_sryptu.png\",\"datePublished\":\"2016-01-22T14:00:55+00:00\",\"dateModified\":\"2016-02-29T10:22:58+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/#\\\/schema\\\/person\\\/cb112c6a320adbb23ec75684b9c1ab0e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#primaryimage\",\"url\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/tworzenie_sryptu.png\",\"contentUrl\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/wp-content\\\/uploads\\\/2016\\\/01\\\/tworzenie_sryptu.png\",\"width\":1009,\"height\":622,\"caption\":\"Tworzenie skryptu\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/matlab-tutorial-7\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MATLAB Tutorial #7\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/#website\",\"url\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/\",\"name\":\"Matlablog\",\"description\":\"Blog MATLAB&amp;Simulink\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matlablog.ont.com.pl\\\/#\\\/schema\\\/person\\\/cb112c6a320adbb23ec75684b9c1ab0e\",\"name\":\"Mi\u0142osz Augusty\u0144ski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4a171af1c3f6814338dcf8cea947e79072578493d244c9c665348d6fa6e61271?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4a171af1c3f6814338dcf8cea947e79072578493d244c9c665348d6fa6e61271?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4a171af1c3f6814338dcf8cea947e79072578493d244c9c665348d6fa6e61271?s=96&d=mm&r=g\",\"caption\":\"Mi\u0142osz Augusty\u0144ski\"},\"description\":\"Kilka s\u0142\u00f3w o mnie znajduje si\u0119 w sekcji \\\"O Blogu\\\".\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MATLAB Tutorial #7 - Matlablog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/","og_locale":"pl_PL","og_type":"article","og_title":"MATLAB Tutorial #7 - Matlablog","og_description":"Tworzenie skrypt\u00f3w W zasadzie, do tej pory na ka\u017cdym kroku podkre\u015bla\u0142em, \u017ce MATLAB nie powinien by\u0107 postrzegany wy\u0142\u0105cznie jako j\u0119zyk programowania. Jest to przede wszystkim \u015brodowisko obliczeniowe, w uproszczeniu mo\u017cna nawet powiedzie\u0107: rozbudowany kalkulator. Niemniej jednak, wraz z rosn\u0105c\u0105 z\u0142o\u017cono\u015bci\u0105 problem\u00f3w obliczeniowych, przed jakimi stajemy, zmiana podej\u015bcia do programu jest nieunikniona. Realizuj\u0105c poprzedni\u0105 cz\u0119\u015b\u0107 poradnika &hellip; Czytaj dalej MATLAB Tutorial #7 &rarr;","og_url":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/","og_site_name":"Matlablog","article_published_time":"2016-01-22T14:00:55+00:00","article_modified_time":"2016-02-29T10:22:58+00:00","og_image":[{"url":"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png","type":"","width":"","height":""}],"author":"Mi\u0142osz Augusty\u0144ski","twitter_card":"summary_large_image","twitter_misc":{"Napisane przez":"Mi\u0142osz Augusty\u0144ski","Szacowany czas czytania":"11 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#article","isPartOf":{"@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/"},"author":{"name":"Mi\u0142osz Augusty\u0144ski","@id":"https:\/\/matlablog.ont.com.pl\/#\/schema\/person\/cb112c6a320adbb23ec75684b9c1ab0e"},"headline":"MATLAB Tutorial #7","datePublished":"2016-01-22T14:00:55+00:00","dateModified":"2016-02-29T10:22:58+00:00","mainEntityOfPage":{"@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/"},"wordCount":2141,"commentCount":0,"image":{"@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#primaryimage"},"thumbnailUrl":"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png","articleSection":["MATLAB Tutorial"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/","url":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/","name":"MATLAB Tutorial #7 - Matlablog","isPartOf":{"@id":"https:\/\/matlablog.ont.com.pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#primaryimage"},"image":{"@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#primaryimage"},"thumbnailUrl":"http:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png","datePublished":"2016-01-22T14:00:55+00:00","dateModified":"2016-02-29T10:22:58+00:00","author":{"@id":"https:\/\/matlablog.ont.com.pl\/#\/schema\/person\/cb112c6a320adbb23ec75684b9c1ab0e"},"breadcrumb":{"@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#primaryimage","url":"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png","contentUrl":"https:\/\/matlablog.ont.com.pl\/wp-content\/uploads\/2016\/01\/tworzenie_sryptu.png","width":1009,"height":622,"caption":"Tworzenie skryptu"},{"@type":"BreadcrumbList","@id":"https:\/\/matlablog.ont.com.pl\/matlab-tutorial-7\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/matlablog.ont.com.pl\/"},{"@type":"ListItem","position":2,"name":"MATLAB Tutorial #7"}]},{"@type":"WebSite","@id":"https:\/\/matlablog.ont.com.pl\/#website","url":"https:\/\/matlablog.ont.com.pl\/","name":"Matlablog","description":"Blog MATLAB&amp;Simulink","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matlablog.ont.com.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/matlablog.ont.com.pl\/#\/schema\/person\/cb112c6a320adbb23ec75684b9c1ab0e","name":"Mi\u0142osz Augusty\u0144ski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/4a171af1c3f6814338dcf8cea947e79072578493d244c9c665348d6fa6e61271?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4a171af1c3f6814338dcf8cea947e79072578493d244c9c665348d6fa6e61271?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4a171af1c3f6814338dcf8cea947e79072578493d244c9c665348d6fa6e61271?s=96&d=mm&r=g","caption":"Mi\u0142osz Augusty\u0144ski"},"description":"Kilka s\u0142\u00f3w o mnie znajduje si\u0119 w sekcji \"O Blogu\"."}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/posts\/399","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/comments?post=399"}],"version-history":[{"count":7,"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/posts\/399\/revisions"}],"predecessor-version":[{"id":429,"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/posts\/399\/revisions\/429"}],"wp:attachment":[{"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/media?parent=399"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/categories?post=399"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matlablog.ont.com.pl\/wp-json\/wp\/v2\/tags?post=399"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}