TECHNOLOGIE INFORMACYJNE FUNKCJE GRAFICZNE 2D I ELEMENTY PROGRAMOWANIA

Podobne dokumenty
Graficzna prezentacja wyników

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Elementy okna MatLab-a

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

Podstawowe operacje graficzne.

Metody i analiza danych

TWORZENIE WYKRESÓW (1)

Grafika w Matlabie. Wykresy 2D

Operatory arytmetyczne

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Grafika dwu- i trójwymiarowa MATLABie

Graficzna prezentacja wyników w MATLABIE

Scilab - podstawy. Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony

Matlab II skrypty, funkcje, wizualizacja danych. Piotr Wróbel Pok. B 4.22

Wizualizacja funkcji w programie MATLAB

Wprowadzenie do pakietów MATLAB/GNU Octave

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

ŚRODOWISKO MATLAB cz.4 Tworzenie wykresów funkcji

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

MATLAB PROJEKTOWANIE GRAFICZNE. Maciej Ulman ETI 9.2. Funkcje graficzne moŝna podzielić na cztery podstawowe grupy:

Laboratorium Cel ćwiczenia Ćwiczenie ma na celu praktyczne przedstawienie grafiki 3D.

MATLAB wprowadzenie śycie jest zbyt krótkie, aby tracić czas na pisanie pętli!

Wprowadzenie do środowiska

Ćwiczenia 11 (12) (4 godziny). Wizualizacja i manipulacja w Matlabie

Wykresy i obiekty graficzne w Matlabie

Podstawy MATLABA, cd.

Wydział Inżynierii Mechanicznej i Mechatroniki. Mateusz Saków

Wykresy. Lekcja 10. Strona 1 z 11

Laboratorium 3 Grafika 2D i 3D w Matlabie. Wprowadzenie do programowania

zajęcia 2 Definiowanie wektorów:

Metody numeryczne. Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski

Laboratorium Komputerowego Wspomagania Analizy i Projektowania

PODSTAWY TWORZENIA WYKRESÓW ORAZ HANDLE GRAPHICS

SCILAB. Wprowadzenie do Scilaba:

Modelowanie Systemów Dynamicznych Studia zaoczne, Automatyka i Robotyka, rok II. Podstawy MATLABA, cz2.

Spis treści MATLAB CZ. 4 TWORZENIE WYKRESÓW FUNKCJI. Technologie Informacyjne. Instrukcja do pracowni specjalistycznej z przedmiotu

Podstawowe wiadomości o programie SciLab wykresy

Usługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, Bielsko-Biała

Interpolacja, aproksymacja całkowanie. Interpolacja Krzywa przechodzi przez punkty kontrolne

GENERACJA PRZEBIEGU SINUSOIDALNEGO.

Scilab - wprowadzenie

Interfejs graficzny Matlaba

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

1) Podstawowe obliczenia. PODSTAWY AUTOMATYKI I ROBOTYKI Laboratorium. Wykonał: Łukasz Konopacki Sala 125. Grupa: poniedziałek/p,

PODSTAWY AUTOMATYKI. MATLAB - instrukcje i funkcje zewnętrzne. Grafika w Matlabie. Wprowadzenie do biblioteki Control System Toolbox.

PODSTAWY INŻYNIERII SYSTEMÓW TECHNICZNYCH

Program na zaliczenie: Odejmowanie widm

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Funkcje wielu zmiennych

, h(x) = sin(2x) w przedziale [ 2π, 2π].

Laboratorium Cyfrowego Przetwarzania Obrazów

VII. WYKRESY Wprowadzenie

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

KATEGORIA OBSZAR WIEDZY

Układ scalony UL 1111

Wprowadzenie do środowiska MATLAB z zastosowaniami w modelowaniu i analizie danych

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

1 Programowanie w matlabie - skrypty i funkcje

LABORATORIUM PODSTAW TELEKOMUNIKACJI

POMIARY WIDEO W PROGRAMIE COACH 5

Rozwiązywanie równań różniczkowych cząstkowych metodą elementów skończonych - wprowadzenie

Elementy Projektowania Inżynierskiego MATLAB Wprowadzenie.

1. Opis okna podstawowego programu TPrezenter.

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

Metody Numeryczne. Laboratorium 1. Wstęp do programu Matlab

1 Wizualizacja danych - wykresy 2D

7. Szybka transformata Fouriera fft

Wydział Inżynierii Mechanicznej i Mechatroniki. Mateusz Saków

Matplotlib - wizualizacja danych

ŚRODOWISKO MATLAB WPROWADZENIE. dr inż. Dariusz Borkowski. Podstawy informatyki. (drobne) modyfikacje: dr inż. Andrzej Wetula

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

ARKUSZ KALKULACYJNY MICROSOFT EXCEL cz.2 Formuły i funkcje macierzowe, obliczenia na liczbach zespolonych, wykonywanie i formatowanie wykresów.

Rysowanie punktów na powierzchni graficznej

FORMUŁY AUTOSUMOWANIE SUMA

Niezawodność diagnostyka systemów laboratorium. Ćwiczenie 2

Matlab Składnia + podstawy programowania

Matlab/Octave wprowadzenie

Laboratorium Przetwarzania Sygnałów Biomedycznych

Wykresy. Informatyka Arkusz kalkulacyjny Excel dla WINDOWS. Excel. cz.4. Wykresy. Wykresy. Wykresy. Wykresy

CYFROWE PRZTWARZANIE SYGNAŁÓW (Zastosowanie transformacji Fouriera)

Ćwiczenie 4. Matlab - funkcje, wielomiany, obliczenia symboliczne

Dopasowanie prostej do wyników pomiarów.

Drugi sposób definiowania funkcji polega na wykorzystaniu polecenia:

Matlab Składnia + podstawy programowania

Instrukcja właściwego wykonania wykresów na zajęcia dydaktyczne.

Matlab. modelowanie prostych eksperymentów losowych. Wykorzystanie funkcji rand - generatora liczb losowych, w który wyposaŝony jest MATLAB.

8. Analiza widmowa metodą szybkiej transformaty Fouriera (FFT)

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Laboratorium Przetwarzania Sygnałów

Przetwarzanie sygnałów

Układy i Systemy Elektromedyczne

Wprowadzenie do Scilab: funkcje i wykresy

Laboratorium Przetwarzania Sygnałów Biomedycznych

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

PRZETWARZANIE SYGNAŁÓW LABORATORIUM

Transkrypt:

ZAJĘCIA 4 TECHNOLOGIE INFORMACYJNE MATLAB FUNKCJE GRAFICZNE 2D I ELEMENTY PROGRAMOWANIA PLAN ZAJEĆ: WSTĘP GRAFIKA DWUWYMIAROWA-ELEMENTARNE WYKRESY DWUWYMIAROWE ZARZĄDZANIE WIELOMA RYSUNKAMI-OKNA GRAFICZNE I OPISY- WANIE WYKRESÓW NAKŁADANIE RYSUNKÓW W JEDNYM UKŁADZIE WSPÓŁRZĘDNYCH WYKRESY DANYCH DYSKRETNYCH WSTĘP Funkcje graficzne w programie MATLAB dzielą się na: a. funkcje przeznaczone do prezentacji danych b. funkcje umożliwiające edycję rysunków c. funkcja pozwalające rysować różne obiekty

1 GRAFIKA DWUWYMIAROWA - ELEMENTARNE WYKRESY DWUWYMIAROWE Podstawowe instrukcje rysowania wykresu dwuwymiarowego z automatycznym skalowaniem osi można zapisać następująco: funkcja(y) funkcja(x, y) funkcja(x, y, s) funkcja(x1, y1, x2, y2,..) funkcja(x1, y1, s1, x2, y2, s2,..) gdzie zamiast wyrazu funkcja należy wstawić jedno z poniższych poleceń: plot tworzenie wykresu o obu osiach wyskalowanych liniowo, loglog tworzenie wykresu o obu osiach wyskalowanych logarytmicznie, semilogx tworzenie wykresu o skali logarytmicznej w osi x i liniowej w osi y semilogy tworzenie wykresu o skali logarytmicznej w osi y i liniowej w osi x x wektor danych na osi odciętych, y wektor lub macierz danych dla osi rzędnych (jeżeli X jest wektorem wierszowym, to liczba kolumn macierzy Y musi być taka sama jak liczba elementów wektora X lub gdy X jest wektorem kolumnowym, to liczba wierszy macierzy Y musi być równa liczbie elementów wektora X), s łańcuch tekstowy jedno-, dwu- lub trój elementowy umieszczony w apostrofach, określający sposób kreślenia krzywych; łańcuch ten zawiera informację o kolorze na ekranie, rodzaju lini i znaczniku na lini, np. b-o oznacza linię niebieską, ciągłą z kółkiem w każdym punkcie; poniżej przedstawione są odpowiednie symbole. Symbol Kolor Symbol Rodzaj lini y m c r g b w k żółty purpurowy niebiesko-zielony czerwony zielony niebieski biały czarny. o x + * - : -. -- pnktowa kółkowa iksowa plusowa gwiazdkowa ciągła kropkowana kropkowo-kreskowa przerywana

2 Przykład 1. Przykład użycia funkcji plot x=-pi:0.1:pi; y=sin(x); plot(x, y) Przykład 2. Przykład tworzenia wykresy dwuwymiarowego z dwóch wektorów X=[1 2 3 4 5]; Y=[2 4 6 7 8 ]; plot(x, Y) Zadanie 1. Proszę narysować wykres funkcji cosinus i tangens. Zadanie 2. Należy wykonać wykresy w skali liniowej, logarytmicznej i semilogarytmicznej dla dowolnej serii danych (min 10 punktów). Zadanie 3. Należy wykonać wykresy funkcji sinus i cosinus. Pytanie 1. Co oznacza taki opis lini wo? fplot Funkcja fplot służy do rysowania wykresów zależności funkcyjnych, tzn. rysuje wykres funkcji o nazwie określonej przez parametr f. fplot(f, granice) fplot(f, granice, n) fplot(f, granice, n, kąt) fplot(f, granice, n, kąt, podprzedziały) [x, y]=fplot(...) gdzie: f łańcuch znaków stanowiący nazwę pliku zawierającego rysowaną funkcję, granice dwuelementowy wektor opisujący granice przedziału w jaki m ma być narysowany wykres, n liczba określająca minimalną liczbę punktów, uwzględnianych przy sporządzaniu wykresu, kąt liczba określająca kąt w stopniach między sąsiednimi odcinkami wykresu powyżej jakiego zwiększana jest liczba punktów próbkowania, poprzedzały skalar określający maksymalną liczbę punktów próbkowania, jaka może zostać dodana w gwałtownie zmieniających się miejscach wykresu. Przykład 3. Przykład użycia funkcji fplot

3 Należy utworzyć m plik fff.m zawierający funkcję: function y=fff(x) y=sin(3*pi*atan(x)); A następnie: [xx, yy]=fplot( fff, [-10 10]); x=-10:0.5:10; y=fff(x); subplot(2, 1, 1) plot(x, y) title( plot ) subplot(2, 1, 2) plot(xx, yy) title( fplot ) Pytanie 2. Jaka jest różnica pomiędzy funkcją plot, a fplot? linspace v=linspace(x1, x2, N) v=linspace(x1, x2) Funkcja linspace generuje wierszowy wektor N liczb rozłożonych równomiernie w przedziale od x1 do x2. Wywołana z dwoma parametrami funkcja wygeneruje 100 liczb. logspace v=logspace(d1, d2, N) v=logspace(d1, d2) Funkcja linspace generuje wierszowy wektor N liczb rozłożonych logarytmicznie w przedziale od 10 d1 do 10 d2 włącznie. Wywołana z dwoma parametrami funkcja wygeneruje 50 liczb. Zadanie 4. Należy wykonać wykres przy pomocy funkcji plot z wykorzystaniem wektorów wygenerowanych przy pomocy funkcji linspace i logspace. ZARZĄDZANIE WIELOMA RYSUNKAMI - OKNA GRAFICZNE I OPISYWANIE WYKRESÓW W oknie graficznym programu MATLAB można umieścić maksymalnie cztery układy współrzędnych (cztery rysunki) dzieląc okno na dwa wiersze i dwie kolumny. Podziału okna graficznego dokonuje się przy pomocy funkcji: subplot

4 subplot(m, n, p) subplot(mnp) gdzie: m liczba wykresów które mają się zmieścić w pionie, n liczba wykresów które mają się zmieścić w poziomie, p numer wykresu, który zostanie narysowany najbliższym wywołaniem funkcji plot, wykresy są numerowane w wierszach od lewej do prawej, a wiersze od góry do dołu. Wykresy można uzupełnić, opisując osie, dodając siatkę współrzędnych, nadając tytuł względnie umieszczając tekst lub opis krzywych na wykresie. Służą do tego następujące polecenia umieszczone za instrukcją rysowania: grid grid grid on grid off Funkcja grid umożliwia naniesienie na wykres pomocniczej siatki współrzędnych. xlabel xlabel(tekst) Funkcja ta wpisuje łańcuch tekstowy pod poziomą osią aktywnego układu współrzędnych. ylabel ylabel(tekst) Funkcja ta wpisuje łańcuch tekstowy obok osi y aktywnego układu współrzędnych. title title(tekst) Funkcja ta umieszcza tytuł nad wykresem. text text(x, y, tekst)

5 Umieszczenie tekstu w miejscu bieżącego wykresu; x, y, wyznaczają punkt początku tekstu w takich jednostkach w jakich wyskalowane są osie x i y. gtext gtext(tekst) Umieszczenie łańcucha tekstowego tekst za pomocą myszy komputerowej. Zadanie 5. Należy wykreślić cztery wykresy w jednym oknie graficznym, a następnie opisać tytuły i osie. NAKŁADANIE RYSUNKÓW W JEDNYM UKŁADZIE WSPÓŁRZĘDNYCH Wykreślenie kilku krzywych w jednym układzie współrzędnych jest możliwe na dwa sposoby: przez umieszczenie danych do rysowania w macierzy, przez nakładanie kolejno generowanych wykresów. plot(x, Y) Wykreślanie w jednym układzie współrzędnych kolumn lub wierszy macierzy Y w funkcji argumentów zawartych w wektorze x. plot(y) Wykreślenie krzywych dla danych zawartych w poszczególnych kolumnach Y w funkcji kolejnych numerów wierszy tej macierzy, plot(x, Y) Wykreślenie kolumn macierzy X w funkcji kolumn macierzy Y w jednym układzie współrzędnych, jeżeli obie macierze mają te same wymiary. plot(x1, Y1, X2, Y2,...) Wykreślenie lini dla poszczególnych par X, Y, przy czym wymiary par mogą być wzajemnie różne. Drugą możliwością jest wykreślenie w jednym układzie współrzędnych krzywych, których dane są zawarte w osobnych macierzach lub wektorach. Stosuję się do tego celu instrukcję hold. hold hold

6 hold on hold off Sterowanie nakładaniem kolejno generowanych wykresów przy zatrzymaniu skalowania osi i miejsca w oknie graficznym. Zadanie 6. Należy wykreślić wykresy funkcji sinus i cosinus w jednym układzie współrzędnych. 5. WYKRESY DANYCH DYSKRETNYCH bar(y) Funkcja bar(y) wykreśla słupki wartości zawartych w wektorze y; rozmieszczenie słupków jest równomierne. bar(x, y, S) Funkcja bar(x, y, S) wykreśla słupki wartości wektora y w funkcji wartości wektora x, które muszą mieć wartości rosnące, równomiernie odległe; S jest łańcuchem tekstowym, np. dla określenia koloru lini. [xb, yb]=bar(x, y) Funkcja [xb, yb]=bar(x, y) zwraca wektory xb i yb w taki sposób, że instrukcją plot(xb, yb) można wykreślić wykres słupkowy.; Stem ZADANIA DO WYKONANIA Proszę wpisać poniższe przykłady wykresów 2D: 1. Algorytm: y=sin(t) 2. Transformata Fouriera dla y=sin(wt). clear; t=0:0.001:1.023; y=sin(20*t); plot(t,y); clear; t=0:0.001:1.023;

7 y=sin(2*pi*10*t); y_f=fft(y); a_y=abs(y_f); plot(a_y); 3. Widmo transformaty Fouriera - generatory liczb losowych okresowych. clear; t=0:0.001:1.023 x(1)=5; a=52; m=112; for i=2:1024; x(i)=rem(a*x(i-1),m); y_f=fft(x); df=1000/1024; a_y=abs(y_f); f=0:df:1000-df; yc=a_y/max(a_y); subplot(2,1,1); plot(yc); subplot(2,1,2); plot(x); 4. Widmo transformaty Fouriera - generatory liczb losowych nieokresowych. clear; t=0:0.001:1.023 x(1)=5; a=48; m=886; for i=2:1024; x(i)=rem(a*x(i-1),m); y_f=fft(x); df=1000/1024; a_y=abs(y_f); f=0:df:1000-df; yc=a_y/max(a_y); subplot(2,1,1); plot(yc); subplot(2,1,2); plot(x); 6. Algorytmy: A =exp(t); y = A * cos( t );

8 %sterowanie fp = 100; fs1 = 5; fs2 = 2; Tmax = 5; t = 0:1/fp:Tmax; A1 = 10; A2 = 5; fi0 = 0; %algorytmy A= A1 * exp(-t); y= A.* cos(2 * pi * fs1 * t + fi0); %demonstracja figure(1); clf; hold on; grid on; plot(t, y, 'g'); 6. Algorytmy: s = rand(size(t)); y = cos( t ); y1 = cos (t ) + s; %sterowanie fp = 1000; fs = 5; Tmax = 0.5; t = 0:1/fp:Tmax; A = 1; fi0 = 0; %algorytmy s = rand(size(t)); y = A * cos(2 * pi * fs * t + fi0 ); y1 = A * cos(2 * pi * fs * t + fi0 ) + s; %demonstracja figure(1); clf; hold on; grid on; plot(t, y, 'g', t, y1, 'r'); 7. Algorytmy: Amod = exp(-t); y = Amod * sin(t ); y2 = sin( t); x = [y y2]; % --- STEROWANIE --- fp = 1000;

9 fs = 10; fs2 = 5; Tmax = 2; A = 1; fi0 = 0; fi02 = 0; t = 0:1/fp:Tmax; t2 = 0:1/fp:2*Tmax+1/fp; % --- ALGORYTM --- Amod = A * exp(-t); y = Amod.* sin(2 * pi * fs * t +fi0); y2 = A * sin(2 * pi * fs2 * t + fi02); x = [y y2]; % --- PREZENTACJA --- figure(1); clf hold on; grid on; plot(t2, x, 'r') xlabel('t'); ylabel('y, y2, x'); 8. Algorytm: y1 = A * sin(t ); y2 = A2 * sin( t); y=y1+y2; % --- STEROWANIE --- fp = 1000; fs = 10; fs2 = 5; Tmax = 0.1; A = 1; A2 = 1; fi0 = 0; fi02 = 0; t = 0:1/fp:Tmax; % --- ALGORYTM --- y = A * sin(2 * pi * fs * t + fi0); y2 = A2 * sin(2 * pi * fs2 * t +fi02); % --- PREZENTACJA --- figure(1); clf hold on; grid on; plot(t, y, 'g'); plot(t, y2, 'b'); plot(t, y+y2, 'r');

10 xlabel('t'); ylabel('a, A2, A+A2'); leg('+g', 'przebieg pierwszy', '+b', 'przebieg drugi', '+r', 'suma', 10); plot(t, y, '+g'); plot(t, y2, '+b'); plot(t, y+y2, '+r'); 9. Algorytm: Amod = A * exp(-t); - exp modulująca y = Amod.* sin(t); - sin modulowany % --- STEROWANIE --- fp = 1000; fs = 10; Tmax = 2; A = 1; fi0 = 0; t = 0:1/fp:Tmax; % --- ALGORYTM --- Amod = A * exp(-t); y = Amod.* sin(2 * pi * fs * t + fi0); % --- PREZENTACJA --- figure(1); clf hold on; grid on; plot(t, y, 'r'); plot(t, Amod, 'g'); xlabel('t'); ylabel('a, exponenta'); leg('r', 'sin zmodulowany', 'g', 'exponenta'); 10. Algorytm: Amod = A * cos( t); - cos modulujący y = Amod.* sin( t); - sin zmodulowany % --- STEROWANIE --- fp = 1000; fs = 10; fs2 = 3; Tmax = 0.5; A = 1; fi0 = 0; fi02 = 10; t = 0:1/fp:Tmax;

11 % --- ALGORYTM --- Amod = A * cos(2 * pi * fs2 * t + fi02); y = Amod.* sin(2 * pi * fs * t + fi0); % --- PREZENTACJA --- figure(1); clf hold on; grid on; plot(t, y, 'r'); plot(t, Amod, 'g'); plot(t, -Amod, 'b'); xlabel('t'); ylabel('a, exponenta'); leg('r', 'sin zmodulowany', 'g', 'cos modulujacy', 'b', 'cos modulajacy', 50); 11. Algorytm: y1 = X * sin (2 * pi * fs * t + fi0); y2 = Y * sin (2 * pi * fs2 * t +fi02); y3 = y1 + y2; fy3 = fft(y3); y31 = ifft(fy3); dy = (y3 - y31).* (y3 - y31); % --- STEROWANIE --- X = 2; Y =.5; fp = 1000; fs = 10; fs2 = 40; fi0 = 0; fi02 = 0; Tmax = 5; t = 0:1/fp:Tmax; % --- ALGORYTM --- y1 = X * sin (2 * pi * fs * t + fi0); y2 = Y * sin (2 * pi * fs2 * t +fi02); y3 = y1 + y2; fy3 = fft(y3); y31 = ifft(fy3); dy = (y3 - y31).* (y3 - y31); % --- PREZENTACJA --- figure(1); clf hold on; grid on; %plot(t, y1, 'g'); %plot(t, y2, 'b');

12 plot(t, y3, 'r'); title('przebieg'); figure(2); clf hold on; grid on; F = fft(y3); subplot(2, 1, 1), plot(t, abs(f), 'b'); title('amplituda'); grid on; subplot(2, 1, 2), plot(t, angle(f), 'r'); title('faza'); grid on; figure(3); clf subplot(2,1,1),plot(t, y3,'g', t, y31, '.r'); subplot(2,1,2),plot(t, dy); 13. Algorytmy: y1 = X * sin (2 * pi * fs * t + fi0 ); y2 = rand(size(t)); przebieg jednostajny y3 = randn(size(t)); przebiegnormalny % --- STEROWANIE --- X = 2; fp = 1000; fs = 10; fi0 = 0; Tmax = 1; t = 0:1/fp:Tmax; t1 = 0:1/fp:2*Tmax; % --- ALGORYTM --- y1 = X * sin (2 * pi * fs * t + fi0 ); y2 = rand(size(t)); %jednostajny y3 = randn(size(t)); %normalny % --- PREZENTACJA --- figure(1); clf subplot(3,1,1), plot(t, y1, 'g'); grid on; subplot(3,1,2), plot(t, y2, 'r'); grid on; subplot(3,1,3), plot(t, y3, 'b'); grid on; figure(2); clf; subplot(3,1,1), hist(y1);title('sygnał z pkt. 1'); subplot(3,1,2), hist(y2);title('szum o rozkładzie jednostajnym'); subplot(3,1,3), hist(y3);title('szum o rozkładzie normalnym'); figure(3); clf; subplot(3,1,1), plot(t1, xcorr(y1),'g'); title('syganł z pkt. 1');grid on;

13 subplot(3,1,2), plot(t1, xcorr(y2),'g'); title('szum o rozkładzie jednostajny ');grid on; subplot(3,1,3), plot(t1, xcorr(y3),'g'); title('szum o rozkładzie normalnym');grid on; figure(4); clf; subplot(3,1,1), plot(t1, xcov(y1),'r'); title('syganł z pkt. 1');grid on; subplot(3,1,2), plot(t1, xcov(y2),'r'); title('szum o rozkładzie jednostajny ');grid on; subplot(3,1,3), plot(t1, xcov(y3),'r'); title('szum o rozkładzie normalnym');grid on; 14. Algorytmy: s = rand(size(t); y1 = X * sin ( t ); y2 = Y * sin ( t ); y3 = y1 + y2; y3s = y1 + y2 + s; % --- STEROWANIE --- X = 2; Y =.5; fp = 1000; fs = 10; fs2 = 40; fi0 = 0; fi02 = 0; Tmax =.5; t = 0:1/fp:Tmax; % --- ALGORYTM --- s = rand(size(t/6)); y1 = X * sin (2 * pi * fs * t + fi0); y2 = Y * sin (2 * pi * fs2 * t +fi02); y3 = y1 + y2; y3s = y1 + y2 + s; % --- PREZENTACJA --- figure(1); clf hold on; grid on; %plot(t, y1, 'g'); %plot(t, y2, 'b'); subplot(2, 1, 1), plot(t, y3, 'r'); title('przebieg "czysty"'); subplot(2, 1, 2), plot(t, y3s, 'g'); title('przebieg "zaszumiony"'); figure(2); clf hold on; grid on; F = fft(y3); Fs = fft(y3s);

14 subplot(4, 1, 1), plot(t, abs(f), 'b'); title('amplituda przebiegu "czystego"'); grid on; subplot(4, 1, 2), plot(t, abs(fs), 'b'); title('amplituda przebiegu "zaszumionego"'); grid on; subplot(4, 1, 3), plot(t, angle(f), 'r'); title('faza przebiegu "czystego"'); grid on; subplot(4, 1, 4), plot(t, angle(fs), 'r'); title('faza przebiegu "zaszumionego"'); grid on; 15. Porównanie FFT z podziałem czasowym z ''FFT'' wbudowanym % dane clear all; close all; t = 0:0.01:2; %t = 0:0.001:1; f = 5; x = 1 * sin(2 * pi * f * t + 0); %x = 1 * sin(2 * pi * f * t + 0) + 1 * sin(2 * pi * 10 * f * t + 0); %%% uzupełnienie do 2^n %%% a = log2(length(x)); b = floor(log2(length(x))); if (a - b) for lp1 = length(x):1:2^(b+1) x(lp1) = 0; e = log2(length(x)); kr = length(x)/2; p = 0; krkr = 1; % obliczenia lb = log2(length(x)); in = 0:length(x)-1;

15 bi = zeros(length(x), lb); for lp1 = 1:length(x) for lp2 = 1:lb po = 2^(lb - lp2); if in(lp1) - po >= 0 bi(lp1, lp2) = 1; in(lp1) = in(lp1) - po; ob = fliplr(bi); oi = zeros(1, length(x)); for lp1 = 1:length(x) for lp2 = 1:lb po = 2^(lb - lp2); if ob(lp1, lp2) == 1 oi(lp1) = oi(lp1) + po; xo = x(oi + 1); xo_ = x(oi + 1); for ee = 1:1:e % disp(sprintf('etap %d', ee)); for krkr = 1:2^(ee-1):kr lr = 2^(ee - 1); r = 0; fr = lr; for p = 2*(krkr-1):1:2*(krkr-1)+(2^(ee-1)-1) % disp(sprintf('p= %d \t q= %d \t r=%d',p,p+2^(ee-1), r));

16 q = p + 2^(ee - 1); X(p + 1) = xo(p + 1) + exp(-i * 2 * pi * r / length(x)) * xo(q + 1); X(q + 1) = xo(p + 1) - exp(-i * 2 * pi * r / length(x)) * xo(q + 1); r = r + 2^(e - ee); fr = fr - 1; if fr == 0 r = 0; fr = lr; p = 0; xo = X; XX = fft(x); % prezentacja scrsz = get(0,'screensize'); xx = scrsz(3)*0.075; x_ = scrsz(3)*0.87; yy = scrsz(4)*0.06; y_ = scrsz(4)*0.9; figure(1); clf; set(1,'position', [xx yy x_ y_], 'MenuBar', 'none', 'Name', ' porównanie FFT z podziauem czasowym z ''FFT'' wbudowanom', 'NumberTitle', 'off'); axes('position', [0.07 0.71 0.9 0.25]); plot(x); ylim = get(gca, 'YLim'); axis([0 length(x) ylim]); xlabel('k'); ylabel('x(k)'); title(sprintf('sygnau uzupełniony do 2^%d, czyli %d', e, length(x))); axes('position', [0.07 0.285 0.4 0.35]); plot(abs(x), 'r'); ylim = get(gca, 'YLim'); axis([0 length(x) ylim]); xlabel('k'); ylabel(' X(k) '); title('widmo amplitudowe obliczone FFT z podziauem');

17 axes('position', [0.57 0.285 0.4 0.35]); plot(abs(xx), 'g'); ylim = get(gca, 'YLim'); axis([0 length(x) ylim]); xlabel('k'); ylabel(' XX(k) '); title('widmo amplitudowe FFT wbudowanej'); axes('position', [0.07 0.07 0.9 0.15]); plot(abs(xx) - abs(x)); ylim = get(gca, 'YLim'); axis([0 length(x) ylim]); xlabel('k'); ylabel('[ X(k) - XX(k) ]'); title('wska nik różnic pomiędzy FFT z podziauem a FFT wbudowanym'); 16. Transformata Fourier'a % dane clear all; f = 10; N = 99; t = 0:0.005:10; x = 1 * sin(2 * pi * f * t + 0); for i = 1:1:(3 * N + 1) X(i) = 0; % obliczenia for k = 0:1:(3 * N - 1) for n = 0:1:(N - 1) X(k + 1) = X(k + 1) + x(n + 1) * exp(-j * ( (2 * pi) / N ) * k * n); XX = fft(x, N); adif = abs(xx(1:1:99)) - abs(x(1:1:99)); fdif = unwrap(angle(xx(1:1:99))) - unwrap(angle(x(1:1:99))); % prezentacja scrsz = get(0,'screensize');

18 xx = scrsz(3)*0.125; x_ = scrsz(3)*0.87; yy = scrsz(4)*0.06; y_ = scrsz(4)*0.9; figure(1); clf; set(1,'position', [xx yy x_ y_], 'MenuBar', 'none', 'Name', ' transformata Fourier''a', 'NumberTitle', 'off'); subplot(3, 1, 1); plot(100 * t, x); hold on; plot(100 * t, x, '.r'); xlabel('n'); ylabel('x(n)'); axis([0 100-1.1 1.1]); title('sygnał'); set(gca, 'Position', [0.05 0.71 0.9 0.2238]); subplot(3, 1, 2); plot(1:1:100, abs(x(1:1:100))); hold on; plot(101:1:298, abs(x(101:1:298)), 'g'); xlabel('k'); ylabel(' X(k) '); axis([0 300 0 60]); title('widmo amplitudowe'); set(gca, 'Position', [0.05 0.405 0.9 0.2238]); subplot(3, 1, 3); plot(1:1:100, unwrap(angle(x(1:1:100)))); hold on; plot(100:1:298, unwrap(angle(x(100:1:298))), 'g'); xlabel('k'); ylabel('arg(x(k))'); title('widmo fazowe'); set(gca, 'Position', [0.05 0.1 0.9 0.2238]); figure(2); clf; set(2,'position', [xx yy x_ y_], 'MenuBar', 'none', 'Name', ' porównanie transformaty ze wzoru z funkcja ''fft''', 'NumberTitle', 'off'); axes('position', [0.05 0.77 0.4 0.20]); plot(abs(x(1:1:101)), 'r'); axis([0 100 0 55]); xlabel('k'); ylabel(' X(k) '); title('widmo amplitudowe ''wzór'''); axes('position', [0.55 0.77 0.4 0.20]); plot(abs(xx), 'g'); axis([0 100 0 55]); xlabel('k'); ylabel(' XX(k) '); title('widmo amplitudowe ''fft'''); axes('position', [0.05 0.58 0.9 0.1]); plot(adif.*adif, '.'); hold on; plot(adif.*adif, 'm'); axis([0 100 0 5e-26]); xlabel('k'); ylabel('[ X(k) - XX(k) ]^2'); title('wska nik różnic pomiędzy fft a ''wzorem'''); axes('position', [0.05 0.25 0.4 0.25]); plot(unwrap(angle(x(1:1:99))), 'r');

19 xlabel('k'); ylabel('arg(x(k))'); title('widmo fazowe ''wzór'''); axes('position', [0.55 0.25 0.4 0.25]); plot(unwrap(angle(xx)), 'g'); xlabel('k'); ylabel('arg(xx(k))'); title('widmo fazowe ''fft'''); axes('position', [0.05 0.08 0.9 0.1]); plot(fdif.*fdif, '.'); hold on; plot(fdif.*fdif, 'm'); axis([0 100 0 1e-24]); xlabel('k'); ylabel('[arg(x(k))-arg(xx(k))]^2'); title('wska ''wzorem'''); figure(3); clf; nik różnic pomiędzy fft a set(3,'position', [10 10 60 90], 'MenuBar', 'none', 'Name', ' :)', 'NumberTitle', 'off'); p(1) = uicontrol('style', 'pushbutton', 'String', 'Close All', 'Position', [25 5 50 30], 'Callback', 'sw'); p(2) = uicontrol('style', 'pushbutton', 'String', 'Fourier', 'Position', [17 40 70 20], 'Callback', 'sw'); p(3) = uicontrol('style', 'pushbutton', 'String', 'Porównanie', 'Position', [17 65 70 20], 'Callback', 'sw'); figure(1); 17. Liniowa zmiana częstotliwości, dewiacja częstotliwości %%% dane f = 10; df = 15; fp = 1000; w0 = 2 * pi * f; dw0 = 2 * pi * df; n = 1:2048; t = 1/fp.*n; N = 700; k = (dw0/n)*fp; wm = 10; Df = 150;

20 %%% obliczenia %% punkt (1a) %% y1a = sin(w0*t+(1/2)*k*(t.*t)); %% punkt (1b) %% y1b = sin(w0*t - (Df/(2*pi*wm))*cos(wm*t)); %% punkt (2a) %% X2a = fft(y1a); X2b = fft(y1b); %% punkt (2b) %% %%% prezentacja scrsz = get(0,'screensize'); xx = scrsz(3)*0.15; x_ = scrsz(3)*0.8; yy = scrsz(4)*0.1; y_ = scrsz(4)*0.8; figure(1); clf; set(1,'position', [xx yy x_ y_], 'MenuBar', 'none', 'Name', ' liniowa zmiana czestotliwosci', 'NumberTitle', 'off'); subplot(2, 1, 1); plot(y1a); axis([0 2048 get(gca, 'YLim')]); title('liniowa zmiana f'); subplot(2, 2, 3); plot(abs(x2a)); axis([0 300 get(gca, 'YLim')]); title('fft sygnau'); subplot(2, 2, 4); specgram(y1a); axis([get(gca, 'XLim') 0 0.2]); title('specgram sygnau'); figure(2); clf; set(2,'position', [xx yy x_ y_], 'MenuBar', 'none', 'Name', ' dewiacja czestotliwosci', 'NumberTitle', 'off'); subplot(2, 1, 1); plot(y1b); axis([0 2048 get(gca, 'YLim')]); title('dewuiacyjna zmiana f');

21 subplot(2, 2, 3); plot(abs(x2b)); axis([0 300 get(gca, 'YLim')+0.1*get(gca, 'YLim')]); title('fft sygnau'); subplot(2, 2, 4); specgram(y1b); axis([get(gca, 'XLim') 0 0.2]); title('specgram sygnau');

22