Introdução ao MatLab Aula 3 Sistemas Multimédia 3º ano Engenharia Informática Universidade Católica de Angola Vectores e Matrizes EXAMPLO: >> a=2:3, b=[a 2*a;a/2 a] a= 2 3 b= 2.0000 3.0000 4.0000 6.0000 1.0000 1.5000 2.0000 3.0000 >> c=[b ; b] c= 2.0000 1.0000 2.0000 1.0000 3.0000 1.5000 3.0000 1.5000 4.0000 2.0000 4.0000 2.0000 6.0000 3.0000 6.0000 3.0000 Vectores e Matrizes >> D=c(2:3, 2:3) D= 1.5000 2.0000 3.0000 4.0000 • >> who Your variables are: Dabc Vectores e Matrizes Examplo: >> a=magic(4) a= 16.0000 2.0000 3.0000 5.0000 11.5000 10.0000 9.0000 7.0000 6.0000 4.0000 14.5000 15.0000 13.0000 8.0000 12.0000 1.0000 >> sum(a) = sum(a') = [34 34 34 34] • >> trace(a) = 34 • A(i, j) indexa fila i, coluna j • Os índices começam a 1 não a zero. • >>a(a, 3) = 3 >>a(3, 1) = 39 >>a(:, 3) = 3 10 6 15 Vectores e Matrizes • >>a(2:3,3:4) = • 10 8 2 12 >>a([1 4],[1 4]) = 16 13 4 1 >>a(8) = 14 • >>[1:3] + [4:6] = 5 7 9 • A=zeros(2,2); B=(ones(3,2); • C = [ [A-1;B+1], [B+3;A-4] ], C= -1 -1 4 4 -1 -1 4 4 2 2 4 4 2 2 -4 -4 2 2 -4 -4 Funções elementares de desenho O MatLab suporta muitos tipos de desenhos para gráficos e superfíciesMATLAB : Linhas bi-dimensionais (xversus y), a cheio, gráfico de barras, queijos, desenhos paramêtricos, eixos logarítmicos, suprfícies, paramêtricos 3D, esféricos Para pré-visualizar alguma dessas potencialidades podemos olhar para as DEMOs Funções elementares de desenho • Desenhos simples 2D – X e Y dois vectores com as mesmas dimensões – O comando plot(x,y) • Abre uma janela gráfica • Desenha um gráfico dos elementos de X contra Y Funções elementares de desenho • Desenhos simples 2D Funções elementares de desenho >>%Exemplo do desenho duma sequência >>t=-1:0.01:1; >>f=4.5*cos(2*pi*t - pi/6); >>%Instruções para desenho, nomes dos eixos … >>plot(t,f),title('Fig.E1.2a'); >>axis([-1,1,-6,6]); >>xlabel('t'); >>ylabel('f(t)'); >>text(-0.6,5,'f(t) = A cos(wt + phi)'); >>grid; Funções elementares de desenho • Desenho do exemplo anterior Funções elementares de desenho PLOT(X,Y) desenha o vector Y versus o vector X TITLE('text') adiciona texto no topo do desenho actual. XLABEL('text') adiciona texto junto do eixo dos X. YLABEL('text') adiciona texto junto do eixo dos Y. GRID, por si coloca as grelhas principais dos actuais eixos GTEXT('string') ?? SUBPLOT(m,n,p),ou SUBPLOT(mnp), divide a janela da figura numa matriz mxn de eixos pequenos. STEM(Y) desenha a sequência de dados Y como stems do eixo dos x terminando como círculos para os valores de dados. SEMILOGX(...) idêntico ao PLOT(...), a menos do uso duma escala logarítmica para o eixo dos X. SEMILOGX(...) idêntico ao PLOT(...), a menos do uso duma escala logarítmica para o eixo dos X. Funções elementares de desenho Por defeito a escala dos eixos é feita automaticamente. Isto pode ser redefinido pelo comando axis. If c = [xmin,xmax,ymin,ymax] for um vector de 4 elementos, então axis(c) estabelece a escala dos eixos para os limites definidos. Por si só o comando axis disponibiliza a escala actual para os gráficos subsequentes. Colocando novamente axis regressa à escala automática. O comando axis('square') assegura o uso da mesma escala para ambos os eixos. Para mais informação ver comando help axis. Funções elementares de desenho • >>%Example 1.2 • >>t=-0.5:0.01:3; • >>t0=0 • >>u=stepfun(t,t0) • >>gprime=3.17*exp(-1.3*t).*cos(10.8*t + 1.15).*u; % NOTE the use of the .* operator. The terms 3.17*exp(-1.3*t), % cos(10.8*t + 1.15), and u are all vectors. We want the % components of these vectors to be multiplied by the corresponding % components of the other vectors, hence the need to use .* rather than *. % The following statements plot the sequence and label the plot • >>plot(t,gprime); • >>axis([-.5,3,-3,2]); • >>title('Fig.E1.2d'); • >>xlabel('t in seconds'); • >>ylabel('gprime(t)'); • >>text(-0.6,5,'f(t) = A cos(wt + phi)'); • >>grid; Funções elementares de desenho • Desenho Funções elementares de desenho Duas formas de fazer múltiplos desenhos num único grafo • • • • >>t = 0:.01:2*pi; >>y1 = sin(t); y2=sin(2*t); y3=sin(4*t) >>plot(t,y1,y2,y3) E formando a matriz Y com os valores das funções como colunas. • • • • >>t = 0:.01:2*pi; >>y = [sin(t)', sin(2*t)', sin(4*t)'] >>plot(t,y) Outra forma é o comando hold. O comando hold mantém o ecrã actual dos gráficos de tal forma que os desenhos subsequentes possam ser sobrepostos. Pode-se redefinir os tipos de linha e de pontos usados por defeito. >>t = 0:.01:2*pi; >>y1 = sin(t); y2=sin(2*t); y3=sin(4*t) >>plot(t,y1,'--',y2,':',y3,'+') • • • • Funções elementares de desenho • • • • • • • • • • Colors y yellow M magenta C cyan R red G green B blue W white K black Line Styles . point o circle x x-mark + plus - solid * star : dotted -. Dashdot -- dashed Mais tipos de marcas são ; square(s), diamond(d), up-triangle(v), downtriangle(^), left-triangle(<), right-triangle(>), pentagram(p), hexagram(h) Ver também help plot para mais cores de linhas e marcas. Funções elementares de desenho O comando subplot pode ser usado para dividir o ecrã de forma a visualizar vários desenhos simultaneamente. Ver help subplot. • Examplo para uso de subplot: • >>% Line plot of a chirp • >> x=0:0.05:5; • >> y=sin(x.^2); • >> subplot(2,2,1), plot(x,y); • >> % Bar plot of a bell shaped curve • >> x = -2.9:0.2:2.9; • >> subplot(2,2,2), bar(x,exp(-x.*x)); • >> % Stem plot • >> x = 0:0.1:4; • >> subplot(2,2,3), stem(x,y) • >> % Polar plot • >> t=0:.01:2*pi; • >> subplot(2,2,4), polar(t,abs(sin(2*t).*cos(2*t))); Funções elementares de desenho • Exemplo subplot Salvaguarda e Carregamento • • • • • • • • • • • Quando se usa o MATLAB, pode desejar guardar os vectores e matrizes que acabou de definir. SAVE, guarda as variáveis do espaço de trabalho para disco SAVE FILENAME guarda todas as variáveis do espaço de trabalho para um ficheiro binário "MAT “designado por FILENAME.mat. Os dados podem ser recuperados com LOAD. Se FILENAME não tiver extensão, é assumido o .mat . SAVE, sem mais nada cria o ficheiro binário "MAT" designado'matlab.mat'. Dá um erro se não consguir escrever em 'matlab.mat'. Para guardar o ficheiro na área de trabalho escreva >>save filename SAVE FILENAME X gurada apenas X. SAVE FILENAME X Y Z guarda X, Y, e Z. Salvaguarda e Carregamento • LOAD carrega as variáveis do espaço de trabalho do disco. • LOAD FILENAME carrega todas as variáveis dum ficheiro dado o nome de ficheiro absoluto ou relativo • Se FILENAME não tiver extensão LOAD verifica FILENAME e FILENAME.mat e trata-a como uma "MAT-file“binária. • Se FILENAME tiver uma extensão diferente de.mat, é tratada como ASCII. • LOAD, por si só usa uma "MAT-file" designada por 'matlab.mat'. Devolve erro se 'matlab.mat' não existir. LOAD FILENAME X carrega só o X. LOAD FILENAME X Y Z ... Carrega as varáveis especificadas. • >>load x, y, z • Ver help save e help load para mais informação Ficheiros M • Os ficheiros M são macros de comandos do MATLAB que são armazendas como ficheiros de texto com extensão "m", isto é nomeficheiro.m. • Um ficheiro M tanto pode ser uma função com variáveis de E/S ou uma lista de comandos.