Číslicové signály a systémy - zima 1998 - cvičení 1.


ÚVOD

MATLAB je programový systém společnosti The MathWorks, Inc. Název souboru vzniknul ze slov "MATrix LABoratory" v osmdesátých letech a plně charakterizuje původní záměr autorů. Dnes je tento systém určitým celosvětovým standardem a jeho použití v oblasti výuky číslicového zpracování signálů je velmi vhodné. Práce v programovém systému je velmi jednoduchá a nevyžaduje hlubší znalosti programování či funkce počítače. MATLAB není programovacím jazykem a vykonání příkazů cyklů je zde velmi pomalé. Proto je vhodné "programovat jinak" než v jazyku C, či PASCALu. Porovnání způsobu práce v systému MATLAB s klasickým programovacím jazykem je ukazán na příkladu součinu dvou vektorů (viz. příklady na konci tohoto textu). Snadnost práce znásobuje existence velikého množství funkcí.

Základním datovým prvkem programového systému MATLAB je obecná komplexní matice vyjádřená s 64 bitovou přesností (double precision). Skaláry se tedy vyjadřují jako matice rozměru (1,1) a vektory jako matice(n,1) nebo (1,n). Poněvadž výsledky operací jsou automaticky komplexní, je dobré mít tuto skutečnost na zřeteli a případně některé operace ošetřit, např. při zobrazení vektoru x použít plot(abs(x)).

V systému MATLAB existují dva režimy práce - interaktivní a dávkový.

Při interaktivním režimu se příkazy s klávesnice okamžitě vykonají. Pro opětné použití již jednou provedeného povelu se zde s výhodou užívá vertikálních kurzorových kláves. Pomocí příkazu diary jmeno.txt lze nastavit ukládání vstupů a odpovědí do ASCII souboru jmeno.txt. Ukončení záznamů se provede příkazem diary off.

V dávkovém režimu se spouští soubory *.m, tzv. m-file. Tyto soubory obsahují sled příkazů v ASCII formátu. Soubor typu *.m se vytváří přímým psaní v jednoduchém ASCII editoru (možné je použití poznámkových bloků, vhodnější je však používání programátorských editorů jako je PFE; naprosto nevhodné jsou pro psaní m-file textové editory typu AmiPro, Word, apod.). M-file je také možné vytvořit editací souboru jmeno.txt vytvořeného pomocí diary.

Příklady programování v Pascalu a v Matlabu.:

PASCAL
Var
	a,b : array[1..10] of integer;
	n,i,c : integer;
Begin
	n :=3
	a[1]:=1; a[2]:=2; a[3]:=3;
	b[1]:=4; b[2]:=5; b[3]:=6;
	c:=0; i:=1;
	while i <= n do
	Begin
		c:=c+a[i]*b[i];
		i:=i+1;
	end;
	writeln(c)
end.
 
MATLAB
a=[1,2,3];
b=[4,5,6];
c=a*b'	% vektor b je transponovan
	% soucin c je nasledne vypsan na obrazovku

Uvedený součin je také možné psát jako c=sum(a.*b).


Rychlý úvod do MATLABU:

1. demo


2. help objekt


3. základní příkazy

+ - * / ^ .* ./ .^ plot(x,y) ;


4. příklady vytváření vektorů a polí

>>vektor1=[1 3 2 6 9]
vektor1		=	1	3	2	6	9

>>vektor2=0:2:10
vektor2		=	0	2	4	6	8	10

>>vektor3=-pi/2:pi/4:pi/2
vektor3	= 	-1.5708	-0.7854	0	0.7854	1.5708

>>vektor4=linspace(0,10,6)
vektor4		=	0	2	4	6	8	10

>>vektor5=logspace(1,2,5)
vektor5	=	10.0000	17.7828	31.6228	56.2341	100.0

. Je dána posloupnost x = 1, 2, 3, ..., 10.

Vypočítejte hodnoty y a z je-li , .

Zobrazte průběh .

Řešení:		x  =  1:1:10;		% vyznam ;
		y  =  10*x./(x + 5);
		z  =  100*x./(x + 5).^2;
	nebo	z = 100*x./((x + 5).*(x+5));
		[x'	y'	z']
		plot(x,z)


5. řešení soustavy rovnic

. Je dána soustava rovnic

Nalezněte neznámé .

Řešení:		Y  =  [3 -3 4; 1 6 5; 1 -2 3]
		I  =  [30 7 17]'
		U  =  Y\I   nebo   U = inv(Y)*I


6. Ohmův zákon a výkon

Př. Rezistory mají hodnoty: , , , , .

Napětí na jednotlivých rezistorech jsou: , , , , .

Vypočtěte proudy a výkony jednotlivých rezistorů, dále spočtěte celkový činný výkon spotřebovaný těmito rezistory.

Řešení:		r  =  [10 20 40 80 100]
		u  =  [20 22 24 26 30]
		i  =  u./r
		p  =  u.*i
		pcelk  =  sum(p)   nebo   pcelk = u*i'


7. komplexní čísla

real(x) imag(x) conj(x) abs(x) angle(x)

Př. Vyjádřete komplexní čísla ve složkovém i polárním tvaru , .

Řešení:		z1 = 4 + j*5,  A1 = abs(z1),  fi1 = angle(z1) 
		z2 = 5*exp(j*0.5)


8. zobrazení časových průběhů

plot grid title xlabel ylabel

Př. Zobrazte průběhy , a je-li , a .

Průběhy zobrazte na intervalu s, s krokem 0,1 s.

Vypište tabulku na intervalu s, s krokem 0,5 s.

Řešení:		clear
		t  =  (0 : 0.1 : 2);
		x =  exp(-t);
		y = t;
		z = x.*y;
		plot(t,x,t,y,t,z);
		grid, title('prubehy'), xlabel('t'), ylabel(x, y, z)
		tabulka = [t' x' y' z'];
		tabulka(1:5:21,:)


9. generování harmonických průběhů

Př. Generujte dvě periody harmonického průběhu napětí o kmitočtu 50 Hz (pro časovou osu volte např. 100 bodů) s amplitudou 5 V.

Řešení:		clear
		t=linspace(0,0.04,100);
		om=2*pi*50;
		u=5*sin(om*t);
		plot(t,u); title('sinusovy prubeh')
		xlabel('t [s]'); ylabel('u(t) [V]');


10. obecné příkazy

who whos what size length clear exit quit save load


11. *.mat a *.m soubory


Zajímavé odkazy:


September 30th 1998 ©RC&PS