Wprowadzenie
Link do prezentacji: Matlab.pptx
Link do ankiety: https://forms.gle/EyJpJXquwRxmzG2eA
Podstawowe instrukcje Matlaba
clear | – | usuwa zawartość workspace (pamięci) t.j. wszystkie zmienne i dane z pamięci |
help [nazwa instrukcji] | – | uruchamia okno kontekstowe z pomocą |
figure() | – | otwieranie okna |
clc | – | CLear Consol, czyści zawartość konsoli |
clf | – | CLear Figure, czyści zawartość bieżącego okna figure |
plot(x,y) | – | rysuje wykres dwuwymiarowy wykorzystując dane x,y |
rand() | – | losuje liczbę z zakresu od 0 do 1, (rozkład jednostajny) |
length(x) | – | oblicza długość wektora x, jeśli x jest macierzą, to podaje jego dłuższy wymiar |
size(x) | – | zwraca rozmiar argumentu x (skalara, wektora lub macierzy), podaje liczbę wierszy i kolumn |
round(x) | – | zaokrąglanie danych do liczb całkowitych |
– | ||
– | ||
– | ||
– | ||
– |
Podstawy programowania w Matlab
Zadanie 1
- Utwórz funkcję f(x) zwracającą wartość wg formuły f(x)=sin(2x2)-e-4x+3
- Oblicz wartość funkcji f(x) dla x=5
- Utwórz wektor danych x w zakresie od -2 do 6 z krokiem co 0.01 x=-2:0.01:6
- Utwórz wektor danych y przyjmujący wartości funkcji f(x), gdzie x to wcześniej utworzony wektor
- Napisz skrypt rysujący funkcję f(x) w zakresie od -2 do 6
Zadanie 2
- Wygeneruj losowy wektor danych o rozmiarze 100, o liczbach losowych, całkowitych w zakresie -10 do 10. Przypisz go do zmiennej w
- Dodaj wszystkie liczby dodatnie
- Dodaj wszystkie liczby ujemne
- Ile liczb jest w zakresie od 2 do 8 ?
- Podaj numery indeksów wektora w, gdzie przechowywane są liczby w zakresie od -2 do 2
Zadanie 3
- Napisz funkcję, która doda dwa wektory danych a i b o różnych rozmiarach w następujący sposób: Jeśli rozmiar wektora a jest większy od rozmiaru wektora b to wynikowym wektorem jest c o rozmiarze większego wektora (a). Wszystkie elementy ze zbioru b należy dodać do odpowiadających elementów ze zbioru a, a pozostałe elementy ze zbioru a powinny być niezmienione.
- Przetestuj działanie funkcji dla następujących dwóch wektorów a=[-2,2,4,-2,0,7]; b=[5,8,-10]
Zadanie 4
- Utwórz funkcję f(x), która będzie zwracać część liczby x po przecinku (np. gdy x=34.234 to f(x) = 0.234)
- Utwórz wektor danych a o losowych liczbach z zakresu od 0 do 256
- Utwórz wektor b, który będzie przechowywał wartości funkcji f(a) (czyli wartości wektora a po przecinku
- Oblicz średnią wartość wszystkich elementów wektora b
- Utwórz wektor c=a-b. Czy wektor c przechowuje tylko całkowite wartości?
- Utwórz wektor d o rozmiarze 32, który przechowuje średnie wartości z kolejnych 8 liczb z wektora a (np. w pierwszym elemencie wektora d będzie znajdować się średnia pierwszych 8 elementów wektora a, w drugim elemencie d, będzie znajdować się średnia z kolejnych 8 elementów ze zbioru a itd.)
Zadanie 5
- Stwórz funkcję silnia(x), obliczającą silnię z liczby x
- Stwórz funkcję suma(x), obliczającą sumę ciągu wektora x
- Stwórz funkcję srednia(x), obliczającą średnią arytmetyczną z wektora x
- Stwórz funkcję sredniaGeo(x), obliczającą średnią geometryczną z wektora x, funkcja powinna sprawdzać czy w zbiorze znajduje się element 0, jeśli tak to funkcja powinna poinformować o tym użytkownika i zwrócić 0.
- *Stwórz funkcję [X,Y]=okrag(xs,ys,r) przyjmujące argumenty xs,ys – współrzędne środka koła, r – promień koła i zwracające 360 współrzędnych równoodległych punktów leżących na okręgu okręgu.
- *Zrealizuj funkcję z następującymi parametrami [X,Y]=okrag(1,1,4) i narysuj wykres plot(X,Y)
Praca z macierzami i wektorami (przynieście słuchawki)
Macierze: D.mat
Zadanie 1 ( Funkcje pracujące na macierzach )
- Funkcja zwracającą średnią wartość wszystkich elementów macierzy oraz liczbę zer
- Funkcja zwracająca maksymalną wartość macierzy oraz jej współrzędne
Zadanie 2
- Otwórz plik D.mat
- Zapisz do zmiennej y pierwszą kolumnę macierzy D
- Wyświetl dane za pomocą funkcji plot(). Co to za dane ?
- Odtwórz drugą kolumnę danych
- Odtwórz trzecią i zrealizuj ukryty przekaz 😊
Zadanie 3
- Zarejestruj dźwięk wychwalający wspaniałość Matlaba z twoim ulubionym podkładem muzycznym
- Zwróć uwagę na częstotliwość próbkowania podkładu muzycznego (z pliku mp3)
- Zapisz dane do mat-pliku SuperMatlab.mat
Zadanie 4
- Zrealizuj kreatywne wykorzystanie mikrofonu, dokonaj ciekawej manipulacji plikiem dźwiękowym i zaprezentuj na zajęciach
Wizualizacja danych cz.1
Zadanie 1
- Odtwórz dane D.mat z poprzedniego zadania i zapisz pierwszą kolumnę danych do y.
- Podpisz osie wykresu
- Wskaż w prostokącie miejsce gdzie wypowiedziano słowo „Matlab” i podpisz je
- Wskazany fragment wykresu przedstaw w powiększeniu na kolejnym wykresie, ale w tym samym oknie
* w tym oknie narysuj oryginalny przebieg lekko transparentny, a słowo Matlab narysuj pełną linią i obierz w ramkę w postaci linii przerywanej dowolnego koloru. - Zapisz to okno do pliku okno.fig
- Zapisz obraz do pliku graficznego .jpeg z rozdzielczością 400 dpi oraz do formatu .pdf.
Zadanie 2
- Odczytaj swoje nagranie (jeśli nie masz możesz skorzystać z jednego z kanałów zapisanych w D.mat)
- Wskaż strzałką najgłośniejszy dźwięk, wzmocnij go o 20% i opisz go tekstem
Zadanie 3
- Wygeneruj wartości funkcji f(x)=2+3*sin(x*x), g(x)= 3-1/(1+x²), k(x)=-3e-x, dla x z zakresu od 0 do 10, zawierającym 1000 elementów (użyj linspace() )
- Oblicz wartości średnie tych funkcji dla wskazanych argumentów x
- Wskaż maksymalne i minimalne wartości
Wizualizacja danych cz.2
Zadanie 4
- Stwórz funkcję dwóch zmiennych f(x,y)=x*cos(y)+y*sin(x)
- Narysuj wykres tej funkcji w przedziale x=-pi do pi i y= -pi do pi
- Zaznacz i odczytaj z wykresu najmniejszą wartość tej funkcji
- Oblicz minimalną wartość tej funkcji za pomocą instrukcji min()
- Oblicz jaki jest błąd odczytu tj. różnica wartości z p. iii i p. iv
Zadanie 2
- Odczytaj zbiór danych D.mat z poprzednich zajęć i wyodrębnij pierwszy kanał do zmiennej y.
- Napisz program, który będzie odtwarzał dźwięk, jednocześnie rysując go na ekranie w oknie figure(1).
Matematyka
- Live script – wprowadzenie
- Wykonywanie działań na symbolach – Symbolic Toolbox
- Rozwiązywanie układu równań liniowych
- Sposoby całkowania i różniczkowania (int, diff)
- Sposoby upraszczania zapisu (simplify, combine, collect, simplifyFraction)
Zadanie 1
- Utwórz równanie funkcji kwadratowej f(x)=ax2+bx+c
- Ustal założenia, że a>0, c<0
- Znajdź analitycznie pierwiastki tego równania
- Następnie oblicz te pierwiastki dla a=2,b=4,c=-4
Zadanie 2
- Utwórz układ równań liniowych 2x+3y=-4 oraz -8x+y=12;
- Podaj rozwiązanie tego układu równań
Zadanie 3
- Utwórz funkcję f(x)=2+3*sin(x*x), g(x)= 3-1/(1+x²), k(x)=-3e-x,
- Oblicz pochodne tych funkcji nazywając odpowiednio df,dg i dk
- Oblicz całki nieoznaczone tych funkcji oznaczając if,ig,ik
- Oblicz całki oznaczone tych funkcji w zakresie od 0 do pi, oznaczając odpowiednio if_val,ig_val,ik_val.
Zadanie 4
- Stwórz funkcję dwóch zmiennych f(x,y)=(x²+y²)1/2
- Wyznacz pochodne cząstkowe tej funkcji po zmiennej x i zmiennej y i nazwij je odpowiednio fx,fy
- Narysuj powierzchnie funkcji f,fx,fy korzystając z instrukcji surf
Praca z plikami
- Praca z plikami tekstowymi (fopen, fprintf(), fclose(), readtable(), writetable(), importdata())
- Import danych z Excela
- Export danych do Excela
Zadanie 1
- Utwórz funkcje f(x)=sin(x)*x
- Oblicz wartości funkcji dla x od -π do π
- Oblicz wartości tej funkcji i dla podanego zakresu x
- Oblicz wartości pochodnej tej funkcji dla wartości x
- Oblicz całkę oznaczoną tej funkcji w zakresie od 0 do x
- Utwórz plik textowy „funkcja.txt” i zapisz w pierwszym wierszu postać tej funkcji z p. i)
- Zapisz wartości funkcji, jej pochodne oraz całkę do pliku w kolejnych kolumnach: LP. / f(x) / f’(x) / int(f(x))
Zadanie 2
- Odczytaj bazę danych baza_danych.txt
- Pomieszaj imiona z nazwiskami losowo w następujący sposób
- Wygeneruj wektor danych ind od 1 do n – liczby studentów, w losowej kolejności za pomocą instrukcji randperm(n).
- Pozamieniaj pozycje z nazwiskami wg wygenerowanych indeksów.
- Zapisz nową bazę danych do pliku baza_danych.topsecret
- Zapisz wektor dekodujący ind do pliku decoder.topsecret
- Stwórz nowy skrypt odczytując zaszyfrowaną bazę danych „baza_danych.topsecret” oraz „decoder.topsecret” i odszyfruj oryginalną baze danych.
Interfejs graficzny (GUI)
Program z pierwszych zajęć:
- Sposób tworzenia obiektów
- Manipulacja właściwościami obiektów
- Interakcja z użytkownikiem
Simulink
- Interfejs użytkownika
- Podstawy programowania blokowego
- Tworzenie programów – rozwiązanie równania różniczkowego
Zaawansowane funkcje Matlaba (Online)
- Integracja z chatGPT
- Interakcja z telefonem komórkowym
- należy zaintalować Matlab Support Package for iOS / Android devices
- Deep Learning Toolbox
- Deep Learning Toolbox Model for GoogLeNet
Realizacja projektów (Online)
Kurs online:
Matlab Onramp – kurs podstaw
Matlab courses – pozostałe kursy
Propozycje tematów projektu
Gry edukacyjne:
- Nauka geografii
Celem gry będzie wskazanie przez gracza wybranego losowego miasta na mapie. Będzie mogła zawierać trzy poziomy trudności: Polska, Europa, Świat. Aplikacja będzie wyświetlała nazwę miasta (ew. Państwa) i oczekiwała na kliknięcie przez użytkownika. Jeśli użytkownik naciśnie w pobliżu danego miasta, otrzymuje punkt.
- Nauka matematyki
Stwórz aplikacje, która będzie pokazywać losowe działania matematyczne i dawać użytkownikowi określony czas na wpisanie poprawnego wyniku. Wprowadź poziomy trudności i awanse, aby motywować gracza. Wprowadź możliwość zapisu aktualnego stanu gry, aby użytkownik mógł powrócić do rozgrywki w późniejszym terminie zachowując awanse. Poziom trudności może dostosowywać się do gracza.
- Nauka szybkiego czytania
Jednym z ćwiczeń do nauki szybkiego czytania jest ćwiczenie poszerzania widzenia peryferyjnego. Chodzi o to, aby uczeń patrząc na środek wyrazu starał się objąć (przeczytać) jak najszerszy wyraz. Program powinien działać w następujący sposób:
- Na początku pojawia się krótki wyraz (np. 3 literowy) na ok. 1 sekundę. Po tej chwili znika i użytkownik powinien wpisać wyraz, który zobaczył. Ma trzy próby.
- Po wpisaniu poprawnej odpowiedzi użytkownik otrzymuje punkt, a następnie pojawia się kolejny wyraz. Jeśli po trzech próbach nie uda mu się odpowiedzieć to otrzymuje punkt ujemny -1. Powiedzmy, że gdy uda mu się w trzeciej próbie to otrzymuje 0 punktów.
- Użytkownik zbierając punkty przechodzi na wyższe poziomy. Na wyższych poziomach pojawiają się wyrazy dłuższe oraz mogą pojawiać się na krótszy okres czasu.
Bazę wyrazów można uzyskać z dowolnego dokumentu. Skopiujcie treść do pliku tekstowego, odczytajcie go w Matlabie i posegregujcie na wyrazy dwu, trzy, czteroliterowe itd.. Pojawiające się wyrazy powinny być wybierane w sposób losowy.
Bazy danych:
- Analiza akcji spółki GPW
Ściąg dane historyczne cen akcji wybranej spółki giełdowej notowanej na GPW z ostatnich 12 miesięcy. Wykreśl na wykresie jak zmieniały się ceny akcji. Dołóż do wykresu średnią kroczącą z n wybranych dni, zdefiniowanych przez użytkownika. Aplikacja powinna pokazywać następujące informacje. O ile wzrosła/spadła cena akcji wyrażonej w procentach w przeciągu ostatnich 12 miesięcy. Jaka była najwyższa cena, jaka była najniższa cena. Jaki był największy obrót akcji i kiedy? Jaki był średni obrót z ostatnich 12 miesięcy.
- Analiza budżetu domowego
Stwórz prostą aplikację do zarządzania domowym budżetem. Aplikacja powinna mieć możliwość wprowadzania danych przez użytkownika tj.: wydatek/przychód, kategoria, data
Kategoria powinna być wybierana spośród kilku dostępnych, zdefiniowanych przez programistę np. dla wydatków (jedzenie, rozrywka, elektronika, komunikacja, parking, itp.). Dla przychodów kategorie powinny być inne (wynagrodzenie, stypendium, pożyczka, darowizna, kieszonkowe, itp.). Aplikacja powinna na wykresie czasowym przedstawiać, jak zmieniały się nasze aktualne środki (saldo). Powinna także pokazywać ile wydajemy w jakich kategoriach i z jakich źródeł mamy jakie dochody.
- Analiza wyników egzaminów ośmioklasisty
Dokonaj analizy danych egzaminów ośmioklasisty bazując na bazy danych ściągniętej ze strony:
https://dane.gov.pl/pl/dataset/2585,srednie-wyniki-uczniow-na-egzaminie-osmoklasisty
Przedstaw w odpowiedni sposób (wykresy liniowe, kołowe, słupkowe) następujące dane statystyczne:
- W których województwach wyniki egzaminów były najlepsze, a w których najgorsze
- Przedstaw wyniki egzaminów z matematyki w zależności od województw
- Z jakimi językami najlepiej radzili sobie uczniowie?
- Czy w językach lepiej poradzili sobie chłopcy czy dziewczęta?
- Czy w matematyce lepiej poradzili sobie chłopcy czy dziewczęta?
- Jak wyniki egzaminów przedstawiały się w przestrzeni lat?
Matematyka:
- Mat-Inżynier
Aplikacja dla inżynierów, wyręczająca ich z trudnych działań matematycznych.
Praca aplikacji polega na analizowanie wskazanej przez użytkownika funkcji.
Użytkownik wpisuje dowolną funkcję jednej zmiennej np. ‘sin2(x)ex’. Aplikacja poniżej wyświetla mu możliwie wszystkie informacje na temat tej funkcji tj.:
- Wykres funkcji (z definiowanym przedziałem)
- Pochodna funkcji
- Całka funkcji
- Miejsce zerowe funkcji
- Możliwe uproszenie zapisu funkcji
Aplikacja ma możliwość generowania raportu zapisując dane do pliku, a także obraz wykresu funkcji, którą możemy użyć w innym programie np. PowerPoint
- Rzut ukośny
Aplikacja tworzy symulacje wyrzucania pocisku z ustalona prędkością początkową i kątem nachylenia. Parametry te definiuje użytkownik. Rysowany jest tor pocisku linią przerywaną, a gdy użytkownik kliknie przycisk animacja, zostanie uruchomiona animacja lecącego pocisku.
Aplikacje możemy rozbudować o wpływ siły wiatru, o różne stopnie nachylenia wzniesienia, a ostatecznie stworzyć grę „Małysz ”.
Audio:
- Odtwarzacz mp3
Stwórz prosty odtwarzacz mp3, który będzie umożliwiał przewijanie, zmianę głośności, modyfikacje plików audio wg uznania.