background image

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

t

< – 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*') – wykre

>

la 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'.

Skalowanie wykresów – funkcje 

 

 axis 

 

 i   log

   -i

  

axis('auto'domy

d

lny tryb skalowania

axis([xmin, xmax, ymin, ymax]) wykreś

w

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

background image

 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ł

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ę

r

dne punktów siatki a 

dane w macierzy Z okre

d

ś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 

 

i kolumn macierzy A;

• n=length(X) - zwraca wymiar wektora X
• disp(A) lub A - pokazuje macierz na ekranie;

background image

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;

background image

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