INTRODUÇÃO À COMPUTAÇÃO - EPET006 - Heleno Pontes Bezerra Neto - [email protected] Variáveis Compostas Homogêneas Multidimensionais 5. ESTRUTURAS DE DADOS V. C. Homog. Unidimensionais Exemplo 39: Fazer um programa que leia um vetor de 10 posições e coloque-o em ordem crescente, utilizando a seguinte estratégia: Selecione o elemento do vetor que apresenta o menor valor; Troque este elemento pelo primeiro; Repita essas operações envolvendo agora apenas os 9 elementos restantes, até restar um único elemento. 5. ESTRUTURAS DE DADOS V. C. Homog. Unidimensionais inicial [2 8 1 5] j=1 [1 8 2 5] j=2 [1 2 8 5] j=3 [1 2 5 8 ] J=4 [1 2 5 8] 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais variável matriz 1 5 4 3 elemento Os elementos de uma matriz M bidimensional são acessados por M(i,j) obs: - Uma matriz pode ser entendida como um conjunto de vetores - Para manipularmos um vetor, basta um laço de repetição - Para manipularmos uma matriz, são necessários “n” laços de repetição, sendo “n’ a dimensão da matriz NO MATLAB A = [1 2 3;4 5 6] 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais - Matrizes: Uma variável onde é armazenada uma matriz pode ser criada escrevendo-se os elementos da matriz entre colchetes [ ].Elementos de uma linha devem ser separados por vírgula ou espaço. Linhas devem ser separadas por ponto e vírgula. >> A = [1,2,3;4,5,6;7,8,9] A = 1 2 3 4 5 6 7 8 9 >> A = [1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 O identificador de uma variável que armazena uma matriz obedece à sintaxe A(i,j), onde A(i,j) é uma matriz com “i” linhas e “j” colunas. 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais Os elementos de uma matriz podem ser acessados das seguintes formas: >> A(3,1) ans = 7 >> A(1,:) ans = 1 : indica que todas as colunas estão sendo mapeadas 2 : indica que todas as linhas estão sendo mapeadas >> A(:,2) ans = 2 5 8 >> A(:,2:3) ans = 2 5 8 3 3 6 9 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais - Matrizes especiais: O MATLAB tem algumas matrizes pré-definidas >> eye(2) ans = 1 0 0 1 >> eye(2,3) ans = 1 0 0 1 >> rand(2,3) ans = 0.5672 0.1293 0.1294 0.5432 >> zeros(2,3) ans = 0 0 0 0 >> ones(2,3) ans = 1 1 1 1 0 0 0.7981 0.9216 0 0 1 1 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais -Operações com matrizes . Operações aritméticas usuais >> A=[1,2;3,4]; B=[-3;1]; C=[3,5;-5,2]; >> A+C ans = 4 7 -2 6 >> 3*A ans = 3 6 9 12 >> C*A ans = 18 26 1 -2 >> A^2 ans = 7 10 15 22 5. ESTRUTURAS DE DADOS . Operações matriciais específicas Seja a matriz >> A = [1 2;3 4] A = 1 2 3 4 Transposta >> A’ ans = 1 3 2 4 Inversa >> inv(A) ans = -2 1 1.5 -0.5 Determinante >> det(A) ans = -2 V. C. Homog. Multidimensionais 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais Seja a matriz >> A = [1 2;-4 0] A = 1 2 -4 0 Linha que contém o maior/menor valor da matriz >> min(A) ans = -4 0 >> max(A) ans = 1 2 Dimensão de uma matriz >> c=size(A) c = 2 2 Ponto antes do operador (efetua a operação termo a termo) >> A^2 >> A.^2 ans = ans = -7 2 1 4 -4 -8 16 0 ≠ 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais Exemplo 41: M = [1 2 3; 4 5 6] % imprime o elemento da segunda linha e terceira coluna. disp(M(2,3)); % Alterando o mesmo elemento da matriz. M(2,3) = 10; % imprime todos os elementos da segunda linha da matriz. for j = 1:1:3 disp(M(2,j)); end 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais Exemplo 42: Construir uma programa para ler duas matrizes, efetuar a sua soma e imprimir o resultado. for i = 1:1:5 disp(‘linha’); disp(i); for j = 1:1:5 disp(‘coluna’); disp(j); a(i,j) = input(‘elemento da matriz a: ’); b(i,j) = input(‘elemento da matriz b: ’); c(i,j) = a(i,j) + b(i,j); end end disp(c) 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais Exemplo 43: Construir um programa para ler uma matriz 5x5 e calcular a sua transposta. 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais Exemplo 43: Construir um programa para ler uma matriz 5x5 e calcular a sua transposta. for i = 1:1:5 for j = 1:1:5 fprintf(‘Linha %d \n’,i); fprintf(‘Coluna %d \n’,j); A(i,j) = input(‘elemento da matriz A: ‘); end end for i = 1:1:5 for j = 1:1:5 B(i,j) = A(j,i); end end disp(B) 5. ESTRUTURAS DE DADOS V. C. Homog. Multidimensionais Exemplo 43 modificado: Construir um programa para ler uma matriz 5x5 e calcular a sua transposta. for i = 1:1:5 for j = 1:1:5 fprintf(‘Linha %d \n’,i); fprintf(‘Coluna %d \n’,j); A(i,j) = input(‘A: ‘); B(j,i)=A(i,j); end end disp(B);