MATLAB Tutorial #7

Tworzenie skryptów

W zasadzie, do tej pory na każdym kroku podkreślałem, że MATLAB nie powinien być postrzegany wyłącznie jako język programowania. Jest to przede wszystkim środowisko obliczeniowe, w uproszczeniu można nawet powiedzieć: rozbudowany kalkulator. Niemniej jednak, wraz z rosnącą złożonością problemów obliczeniowych, przed jakimi stajemy, zmiana podejścia do programu jest nieunikniona. Realizując poprzednią część poradnika stworzyłeś procedurę, która w oparciu o wejściowe dane umożliwiła wyświetlenie wykresu przedstawiającego miesięczną liczbę oddanych do użytku mieszkań poczynając od roku 1991 po dzień dzisiejszy. Do tego doszło poszukiwanie miesiąca, dla którego liczba mieszkań osiągnęła maksimum oraz wszystkich nietypowych miesięcy, gdy liczba oddanych do użytku mieszkań przekroczyła dowolnie wskazany poziom. Zrealizowanie tego wymagało wpisania kilkunastu linii kodu. Nie jest to zbyt dużo i obiektywnie na to patrząc, stworzenie tego kodu nie było trudne. Jednak, jeśli przyszłoby nam wykonać identyczną analizę, ale ograniczoną np. wyłącznie do mieszkań „spółdzielczych”, znaczną część kodu należałoby wpisać ponownie Choć wymagane modyfikacje kodu są niewielkie, wklepywanie niemalże wszystkiego od początku w wierszu poleceń, to ewidentnie strata czasu. Na tym etapie warto sięgnąć po narzędzie, jakim jest skrypt.
Czytaj dalej MATLAB Tutorial #7

Transformacja Fouriera - zrozumieć z MATLABem

Transformacja Fouriera

Transformata Fouriera to jedno z podstawowych narzędzi dostępnych w MATLABie.  Bardzo często użytkownicy błędnie łączą najpopularniejszą funkcję związana z transformacją Fouriera (fft – fast Fourier transform) z przybornikiem Signal Porcessing Toolbox. W rzeczywistości funkcja fft jest częścią podstawowego pakietu MATLAB. Jest to w końcu naprawdę "podstawowa" funkcja i prawdopodobnie dla wielu użytkowników będzie dosyć toporna w użyciu. Wiąże się to z koniecznością „obrobienia” wyników zwracanych przez fft w przypadku najpopularniejszych zastosowań. Korzystając z Signal Processing Toolbox możemy liczyć na pewne ułatwienia. Funkcje takie jak periodogram czy pwelch zwracają nam wyniki w przyjaźniejszej postaci. Nie będę się w tym wpisie zagłębiać w temat działania powyższych funkcji. Chciałbym natomiast przedstawić, w jaki sposób MATLAB pomógł mi swojego czasu zrozumieć, o co w tej całej transformacji Fouriera tak naprawdę chodzi.

Czytaj dalej Transformacja Fouriera - zrozumieć z MATLABem

Matlab Tutorial #6

Choć MATLAB może być traktowany jako język programowania, na pewno może zaskoczyć nietypowymi, dla "rasowego" programisty rozwiązaniami. Idea jest w zasadzie taka, by użytkownik środowiska MATLAB analizując dane nie musiał uciekać się na każdym kroku do tworzenia funkcji pomocniczych i wykorzystywania konstrukcji programistycznych takich jak pętle i instrukcje warunkowe. One w MATLABie oczywiście istnieją  i są w wielu sytuacjach niezbędne, jednak wiele można zrobić bez nich.

Czytaj dalej Matlab Tutorial #6

Matlab Tutorial #5

Przekształcanie macierzy

 

Na dane związane z budownictwem mieszkaniowym, które służą nam jako baza do zapoznania się z MATLABem, można patrzeć naprawdę w różny sposób. Wierzę, że jeśli chcesz poeksperymentować i wyciągnąć z pliku interesujące Cię informacje, to jesteś już w stanie zrobić to sam. Niemniej jednak chciałem zademonstrować Ci działanie kolejnej funkcji MATLABa, która przy wstępnej pracy z danymi macierzowymi może się przydać.

Przypuśćmy, że chcemy zaobserwować, jak z miesiąca na miesiąc zmieniała się ogólna liczba oddanych do użytku mieszkań, począwszy od roku 1991 a kończąc na roku 2011. Możemy oczywiście wybierać poszczególne wektory dla poszczególnych lat i sklejać je potem w całość ale możemy też zrobić to sprytniej. Czytaj dalej Matlab Tutorial #5

Centralne twierdzenie graniczne i MATLAB

Nie tak dawno odbyłem bardzo ciekawą rozmowę dotyczącą polityki. Rozmowy w tym temacie nie są zazwyczaj pasjonujące, ale nie tym razem. Mój rozmówca zastanawiał się, jak to jest możliwe, że tak ważną rzecz, jak wyniki wyborów parlamentarnych sonduje się na podstawie badania grupy jedynie 1000 osób. Czy to w ogóle ma to sens? Czy czasem nie ma tu jakiegoś przekrętu? Jak to w ogóle jest możliwe, że sondowana jest tak niewielka grupa osób, a potem podawane są przybliżone wyniki z pewnym, względnie niewielkim, błędem statystycznym? Jak ten błąd jest liczony i dlaczego jest taki, a nie inny?
Choćby nie wiem ile wysiłku włożyć w energiczną gestykulację, naprawdę ciężko jest w rozmowie odpowiedzieć w jasny sposób na postawione pytania i rozwiać wątpliwości. O wiele prościej przedstawić wszystko wykorzystując sprawdzone narzędzie, jakim jest MATLAB.

Czytaj dalej Centralne twierdzenie graniczne i MATLAB

Wpis o tym, jak usunąć kreseczki z obrazka

 

ONTLogo

Jak już ostatnio zachwalałem, w MATLAbie można tworzyć naprawdę piękne wykresy. Każdy, nawet początkujący użytkownik jest w stanie stworzyć przejrzysty i dobrze opisany wykres dzięki kilku prostym poleceniom, ewentualnie z drobną pomocą narzędzia Plot Tools. Z moich obserwacji wynika jednak, że jest grupa użytkowników, którym czytelny wykres do szczęścia nie wystarczy. Trafiają się osoby, które pragną, by wykres był po prostu perfekcyjny (co każdy oczywiście rozumie na swój własny, indywidualny sposób). Uświadomiła mi to kiedyś pewna pani Profesor, uczestniczka szkolenia z podstaw MATLABa, gdy w trakcie zajęć zadała proste z pozoru pytanie: jak usunąć z wykresu te małe, pomocnicze kreseczki. Niektórym wydaje się, że dla trenerów prowadzących różnego rodzaju kursy pytania proste i często powtarzające się muszą być jakąś straszną katorgą. Nic bardziej mylnego. Proste pytanie najczęściej umożliwia udzielania skomplikowanej odpowiedzi, co jednej strony pozwala zyskać w oczach kursantów uznanie i szacunek, z drugiej strony zmniejsza ilość czasu kursu, która mogłaby być wykorzystana na zadanie jakiegoś trudnego pytania. Nie daj Boże takiego,  na które trener nie zna odpowiedzi. Ponieważ pytanie było kolejnym z rzędu, nie miałem ochoty na szczególne rozwlekanie odpowiedzi i ograniczyłem się do stwierdzenia, że jeśli na wykresie przy pomocy polecenia grid on zostanie umieszczona pomocnicza siatka,  to usunąć ją można poleceniem grid off.

wykres

Czytaj dalej Wpis o tym, jak usunąć kreseczki z obrazka

Matlab Tutorial #4

Indeksowanie macierzy

Przyglądniemy się teraz naszym danym w inny sposób.  Zobaczmy,  jak na przestrzeni lat zmieniała się liczba oddanych do użytku mieszkań budowanych przez inwestorów indywidualnych. W celu zaznajomienia się z problemem, otwórz do podglądu plik arkusza Excel z pierwotnymi danymi.

  • w przeglądarce plików, w oknie current folder kliknij prawym przyciskiem myszy na pliku mieszkania*.xls i wybierz opcję open outside MATLAB

liczba mieszkań - excell

Czytaj dalej Matlab Tutorial #4

MATLAB Plot Tools

Jedną z rzeczy, które od zawsze dawały MATLABowi przewagę nad konkurencją jest możliwość tworzenia w prosty i szybki sposób pięknych wykresów. Prosto, szybko i pięknie... poprzednie zdanie wygląda na oksymoron, ale rzeczywiście jest tak, że zaawansowany użytkownik nie ma najmniejszego problemu, by w ciągu kilku chwil stworzyć w MATLABie piękny wykres. W dodatku wykres, który wygląda dokładnie tak, jak sobie użytkownik zaplanował. Zawodowiec może to zrobić w szybki sposób, bo w końcu jest zawodowcem, a czy mniej zaawansowany użytkownik ma szansę na stworzenie czegoś pięknego? Choćby kosztem czasu? Oczywiście, wystarczy że przekopie się przez dokumentację programu lub skorzysta z Plot Tools. Mimo, że dokumentacja programu jest naprawdę wspaniała, drugie rozwiązanie wydaje się atrakcyjniejsze. Opisem Plot Tools zajmę się w dzisiejszym wpisie.

Czytaj dalej MATLAB Plot Tools

MATLAB Tutorial #3

Działanie funkcji na wektorach

W MATLABie większość funkcji obliczeniowych i graficznych możemy wywoływać na wektorach oraz macierzach. W niektórych przypadkach wymiar macierzy będącej argumentem wejściowym funkcji nie ma większego znaczenia, gdyż funkcje mogą traktować macierz jako zbiór niezależnych elementów, gdzie obliczenia wywoływane są dla każdego elementu niezależnie. Na przykład działają tak funkcje trygonometryczne.

x = sin(ogolem1991)

Oczywiście sens powyższej operacji jest mocno dyskusyjny 🙂 W każdym razie, w przypadku funkcji sinus wynik został wyznaczony niezależnie dla każdego elementu macierzy ogolem1991. Nieco inaczej sprawa wygląda, gdy dla danych uruchomimy funkcję typu diff lub jedną z funkcji statystycznych. Tutaj wymiar ma znaczenie. Zacznijmy od prostszego przypadku, czyli od pracy z wektorem.

  • Wyznacz średnią ilość mieszkań spółdzielczych oddawanych do użytku miesięcznie w roku 1991
spoldzielcze1991M = diff(spoldzielcze1991);
spoldzielcze1991M = [spoldzielcze1991(1) spoldzielcze1991M];
x = mean(spoldzielcze1991M)

x =

6.9628e+03

Funkcja mean wyznaczyła wartość średnią dla wszystkich danych zebranych w wektorze spoldzielcze1991M. MATLAB przedstawił wynik w specyficznym formacie "naukowym". 6.9628e+03 oznacza 6.9628 * 1000.

Czytaj dalej MATLAB Tutorial #3