Podstawy podstaw, czyli MATLAB w pigułce- wersja dla leniwych zapracowanych 1.WYKRESY

plot(X) – rysuje wektor X w funkcji indeksu, w przypadku macierzy traktuje je jak zestaw wektorów plot(X,Y) – wykreśla wektor Y w funkcji wektora X, Gdy X lub Y jest macierzą to wektor jest rysowany odpowiednio w funkcji kolumn lub rzędów.

plot(X,Y,S) – wykreśla jak funkcja plot(X,Y) ale dodatkowo pozwala wybierać kolor, rodzaj linii i symbole punktów.

Kolor

Symbole punktów

Rodzaj linii

y – yellow

. – point

- – ciągła

m – magenta

o – circle

: – kropkowana

c – cyan

x – x-mark

-. – kropka-kreska

r – red

+ – plus

-- – kreskowana

g – green

* – star

b – blue

s – kwadraty

w – white

d – romb

k – black

v – trójkąt w dół

^ – trójkąt w gór

< – trójkąt w lewo

> – trójkąt w prawo

p – pięciokąt

h – sześciokąt

Przykład:

>> plot(1:10,y) % wykreśla wektor od 1 do 10 w funkcji wektora y

>> plot(1:10,y, 'bx') – j.w. ale dodatkowo wykresla go w kolorze niebieskim zaznaczając punkty krzyżykami.

>> plot(1:10,x, 'bx ', 1:10,y, 'r*') – wykrela dwa wykresy na jednym fplot(F,P) – funkcja wykreśla funkcję F daną w postaci łańcucha w przedziale P.

>> fplot('2*sin(x) ',[0 2*pi])

% funkcja 2*sin(x) w przedziale od 0 do 2K

ezxplot(F,P) – funkcja wykreśla funkcję F w przedziale P.

>> ezplot(x, 2*y, [0,2*pi])

% wykres funkcji parametrycznej typu x=x(t), y=y(2t), t[0,2K]

Rysowanie wielu wykresów na wspólnym wykresie graficznym – funkcja hold:

hold on -wstrzymuje czyszczenie okna graficznego

hold off - przywraca tryb domyślny (każdorazowe czyszczenie okna) ishold -testuje tryb rysowania wykresów

figure - otwiera nowe okno graficzne

>> figure(n) % uaktywnia okno graficzne o danym parametrze,

>> close % zamyka okno aktywne lub okno z zadanym parametrem.

>> cla % czyści bieżący wykres

>> clf % czyści aktywne okno graficzne

subplot

Funkcja subplot służy do podziału okna graficznego na mniejsze fragmenty. Podziału można dokonać albo w układzie macierzowym, albo podając dokładne wymiary wykresu.

subplot(m,n,p) - dzieli okno graficzne na M kolumn i N wierszy (M,N<9). P oznacza numer aktualnego wykresu. Można też wywołać jako subplot(mnp)

line(x,y) rysuje linie łamaną łączącą wierzchołki punktów wyznaczonych przez elementy wektorów x i y fill(x,y,’c’) rysuje wielokąt o wierzchołkach w punktach wyznaczonych przez wektorów x i y, wypełniony kolorem 'c'.

S

kalowanie wykresów – funkcje ax

is i l og -i

axis(' auto' ) domylny tryb skalowania

axis([xmin, xmax, ymin, ymax]) wykreśla wykres w zadanych przedziałach osi X i Y

axis(' off' ) ukrywa osie

axis(' on' ) przywraca wyświetlanie osi

axis(' equal' ) osie mają proporcjonalne jednostki na obu osiach X i Y

loglog(x) skala logarytmiczna na obu osiach

semilogx(x) skala logarytmiczna na osi X

semilogy(x) skala logarytmiczna na osi Y

Opisywanie wykresów

plot(x,y, 'r ') - wykres funkcji

title('To jest wykres') - Tytuł wykresu

grid off - wyłączenie wyświetlania siatki

t>

%

%

dw

xlabel('o X') - podpis osi X

ylabel('o Y') - podpis osi Y

text(2,4, 'tu jest punkt') - tekst wstawiony w punkcie (2,4) Funkcja meshgrid – tworzy macierze opisujące położenie węzłów siatki prostokątnej. Służy do przygotowania danych niezbędnych do stworzenia większości wykresów 3D.

Przykład:

>> [X,Y]=meshgrid(x,y); % tworzy macierze X, Y na podstawie wektorów z węzłami siatki x, y

>> [X,Y]=meshgrid(x); % j.w. ale y=x

Funkcja mesh

mesh(X,Y,Z) – funkcja mesh rysuje siatkę opisaną przez macierze X,Y,Z. Gdzie macierze X, Y podają współrzędne punktów siatki a dane w macierzy Z określają wartość funkcji w punkcie (x,y).

Mesh(X,Y,Z,c) – c – indeksy kolorów w aktualnej mapie kolorów.

2.MACIERZE

Do generowania pewnych macierzy można stosować funkcje:

zeros(w,k):-macierz wypełniona zerami np.: A = zeros(2,3) ans =

0 0 0

0 0 0

ones(w,k):-macierz wypełniona jedynkami np.: A = ones(2,4) ans =

1 1 1 1

1 1 1 1

rand(w,k):-macierz liczb pseudolosowych o rozkładzie równomiernym np.: A = rand(2,5) ans =

0.9501 0.6068 0.8913 0.4565 0.8214

0.2311 0.4860 0.7621 0.0185 0.4447

eye(N): macierz jednostkowa (kwadratowa N x N z jedynkami na przekątnej głównej i zerami)

-Definicja macierzy przez wyliczenie elementów:

A=[2 2 2 1; 1 2 3 1]

A =

2 2 2 1

1 2 3 1

-Definicja macierzy przez wygenerowanie elementów:

A=[min:krok:max]

Polecenie generuje wektor poczynając od elementu o wartości min, kończąc na elemencie max z krokiem krok;gdy krok nie jest zdefiniowany przyjmuje wartość 1.

-Odwołanie do elementów:

A(2,3) odwołanie do elementu 3 w wierszu 2

-Odwołanie do podmacierzy, przykłady:

B=A(:,[1:3 5])- utworzenie macierzy B poprzez pobranie z macierzy A kolumn 1-3 oraz 5

B=A([1 3], 1:2:5)- utworzenie macierzy B z elementów macierzy A leżących na przecięciu 1 i 3 z kolumnami 1, 2 i 5

-Usuwanie wektora z macierzy:

» A=[1 2 3 4; 4 5 6 7]

A =

1 2 3 4

4 5 6 7

» A(2,:)=[ ] - usuwa drugi wiersz macierzy A

A =

1 2 3 4

» A(:,1:2)=[ ] - usuwa dwie pierwsze kolumny macierzy A

A =

3 4

6 7

-Jeżeli w macierzy Y w miejsce (3,2) chcemy wstawić np. 5 , to piszemy: Y(3,2)=5;

-Wymiar i wyświetlanie macierzy

• [n,m]=size(A) zwraca liczbę wierszy m i kolumn n macierzy A;

• n=length(X) - zwraca wymiar wektora X

• disp(A) lub A - pokazuje macierz A na ekranie; zrd-

Operator

Operacja macierzowa

Operacja tablicowa

Dodawanie

+

+

Odejmowanie

-

-

Mnożenie

*

.*

Dzielenie lewostronne

\

.\

Dzielenie prawostronne

/

./

Potęgowanie

^

.

inv(A) lub A^(-1) zwraca macierz odwrotną do A

A’ - transponuje macierz A

det(A) - obliczanie wyznacznika macierzy A

• eig(A) wartości własne macierzy A

• poly(A) obliczanie współczynników wielomianu charakterystycznego macierzy A

• rank(A) obliczanie rzędu macierzy A

• diag(A) wyznaczenie elementów leżących na głównej przekątnej macierzy A 3.IMPULSY

Tu wyszło moje lenistwo, po prostu wklejam kod z projektu robiący wszystko co trzeba.

%sinus

fp=20000;

dt=1/fp; %odstęp pomiędzy próbkami t=0:dt:0.5; %czas

R=1000; C=2e-6; tau=R*C; %elementy obwodu RC

kx=1/tau*exp(-t/tau); %odpowiedz impulsowa fs=0.05/tau:0.1/tau:0.15/tau %wybrane częstotliwości sygnału plot(t,kx) %wykres odpowiedzi impulsowej yk(length(t))=0; %zarezerwowany obszar na sygnał

ti=0:dt:max(t); %przedział czasowy dla sygnału niezerowego Ug=1 %napięcie pobudzenia

% pętla konieczna z uwagi na fakt, iż analiza dokonywana jest równocześnie dla fs i f.

for i=1:length(fs)

ys(i,:)=Ug*sin(2*pi*fs(i)*t);

yk(i,1:length(ti))=ys(i,1:length(ti));

s1(i,:)=dt*conv(kx,yk(i,:));

end

plot(t(1:5000),s1(i,1:5000),'r',t(1:5000),yk(i,1:5000),'b')

xlabel('t[s]'); ylabel('U[V]');

grid

figure

mesh(s1(:,1:2000)) %obraz zmian sygnału w funkcji częstotliwości end

%odpowiedź impulsowa dla sygnału prostokątnego;

fp=20000;

dt=1/fp; %odstęp pomiędzy próbkami t=0:dt:0.5; %czas

R=1000; C=2e-6; tau=R*C; %elementy obwodu RC

kx=1/tau*exp(-t/tau); %odpowiedź impulsowa plot(t,kx) %wykres odpowiedzi impulsowej yk(length(t))=0; %zarezerwowany obszar na sygnał

ti=0:dt:max(t)/5; %przedział czasowy dla sygnału niezerowego Ug=1 %napięcie pobudzenia yk(1:length(ti))=Ug;

s1=dt*conv(kx,yk);

plot(t(1:5000),s1(1:5000),'r',t(1:5000),yk(1:5000),'b')

xlabel('t[s]'); ylabel('U[V]');

grid

end

%odpowiedź układu RC dla pobudzenia sinus kluczowany;

fp=20000;

dt=1/fp; %odstęp pomiędzy próbkami t=0:dt:0.5; %czas

R=1000; C=2e-6; tau=R*C; %elementy obwodu RC

kx=1/tau*exp(-t/tau); %odpowiedź impulsowa fs=0.05/tau:0.1/tau:0.15/tau %wybrane częstotliwości sygnału plot(t,kx) %wykres odpowiedzi impulsowej yk(length(t))=0; %zarezerwowany obszar na sygnał

ti=0:dt:max(t)/5; %przedział czasowy dla sygnału niezerowego Ug=1 %napięcie pobudzenia

% pętla konieczna z uwagi na fakt, iż analiza dokonywana jest równocześnie dla fs i f.

for i=1:length(fs)

ys(i,:)=Ug*sin(2*pi*fs(i)*t);

yk(i,1:length(ti))=ys(i,1:length(ti));

s1(i,:)=dt*conv(kx,yk(i,:));

end

plot(t(1:5000),s1(i,1:5000),'r',t(1:5000),yk(i,1:5000),'b')

xlabel('t[s]'); ylabel('U[V]');

grid

figure

mesh(s1(:,1:2000)) %obraz zmian sygnału w funkcji częstotliwości end

Żeby wszystko było w jednym miejscu- Czarkowe echo:

[n0,fp,bits]=wavread('C:\matlab\ed1.wav'); %wczytanie pliku wav do macierzy n0

g=[1,zeros(1,5000),1]; % utworzenie macierzy z zerami

n1=n0(:,1); %wycięcie pierwszej kolumny z pliku wav

n2=n0(:,2); % wycięcie drugiej kolumny z pliku wav

x1=conv(n1,g);%właściwe tworzenie echa (czyli przesunięcie macierzy n1 o 5000 elementów i późniejsze sklejenie z pierwotnym n1

tak jak w dodawaniu pisemnym) dla jednego kanału

x2=conv(n2,g);%jw

x3=[x1 x2]; % robimy stereło

sound(x3,44100) % I słuchamy jak nam wyszło