Processamento da Informação Matrizes – Parte 1 Prof. Jesús P. Mena-Chalco CMCC/UFABC Q1/2017 1 Vetores Os elementos de um vetor são armazenados/alocados de forma consecutiva na memória. 0 Os elementos são acessados por seu índice dentro do vetor. X:= 10 1 2 4 -95 3 4 … 37 2910 2 Vetor em Java Declaração de uma variável que representa um array de 13 inteiros 3 Matriz bidimensional em Java Declaração de uma variável que representa uma matriz bidimensional de inteiros (10 linhas e 20 colunas) 4 Matriz bidimensional em Java colunas 0 1 2 3 4 5 ... 0 1 2 linhas 3 . . . 5 Matriz bidimensional em Java 0 1 2 3 4 5 0 1 2 matriz[2][0] matriz[1][4] 3 6 Matriz bidimensional em Java Declara uma matriz M de 100 linhas com 200 colunas (20mil inteiros) A memória do computador é linear! Material adaptado da aula de Matrizes de Ronaldo F. Hashimoto e Carlos H. Morimoto (IME/USP) Memória (hardware) RAM ... HDD SSD ... 8 Estrutura da matriz na memória do computador Matriz bidimensional em Java Material adaptado da aula de Matrizes de Ronaldo F. Hashimoto e Carlos H. Morimoto (IME/USP) Disposição dos 20mil elementos da matriz M na memória Material adaptado da aula de Matrizes de Ronaldo F. Hashimoto e Carlos H. Morimoto (IME/USP) Erros comuns - Considerar índices negativos - Considerar índices que ultrapassam as dimensões da matriz int M[][] = new int[4][6] 0 1 2 3 4 5 0 matriz[-1][4] 1 2 3 matriz[4][6] 11 Matriz bidimensional (imagem em níveis de cinza) Nível=18 Matriz tridimensional (imagem em RGB) {Red, Green, Blue} Matrizes Matriz unidimensional (vetor/Array) Matriz bidimensional (2D) 0 1 2 3 4 Matriz tridimensional (3D) 0 5 0 0 0 1 1 1 2 2 2 3 3 3 1 2 3 4 5 15 Matrizes Matriz unidimensional (vetor/Array) Matriz bidimensional (2D) 0 1 2 3 4 Matriz tridimensional (3D) 0 5 0 0 0 1 1 1 2 2 2 3 3 3 M[2] M[2][4] 1 2 3 4 5 M[2][5][2] 16 17 Processamento de imagens multiespectrais (imagens do mesmo objeto, mas capturadas com diferentes comprimentos de onda eletromagnéticas) Os aparelhos consideram diferentes comprimentos de onda para cada camada. http://all-geo.org/volcan01010/2013/01/processing-arsf-remote-sensing-data-with-open-source-gis-tools/ 18 Exemplo 01: Definição 20 Exemplo 02: Listando os elementos 21 Exemplo 02: Listando os elementos 00000000000000000000000000000000000000000000000000 22 Exemplo 02: Listando os elementos 0000000000 0000000000 0000000000 0000000000 0000000000 23 Exemplo 03: Atribuindo valores 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 47 0 0 0 0 0 49 24 Exemplo 04: Matriz identidade de ordem n Vamos desenvolver um método que permita criar uma matriz identidade de ordem n. Uma matriz identidade é uma matriz quadrada, onde todos os elementos da diagonal principal é 1, os demais elementos são 0s. Assinatura: static int[][] matrizIdentidade( int n ) 25 Exemplo 04: Matriz identidade de ordem n 26 Exemplo 04: Matriz identidade de ordem n 27 Exemplo 04: Matriz identidade de ordem n 1000 0100 0010 0001 28 Exemplo 05: Matriz diagonal Vamos desenvolver um método que permita verificar se uma matriz é diagonal. Uma matriz diagonal é uma matriz quadrada onde os elementos que não pertencem à diagonal principal são obrigatoriamente iguais a zero. Assinatura: static boolean ehDiagonal( int [][]M ) 29 Exemplo 05: Matriz diagonal 30 Exemplo 05: Matriz diagonal 31 Exemplo 05: Matriz diagonal 32 Exemplo 06: Matriz transposta Vamos desenvolver um método que permita calcular a matriz diagonal de uma matriz dada como entrada. Assinatura: static int[][] transposta( int [][]M ) 33 Exemplo 06: Matriz transposta 34 Exemplo 06: Matriz transposta 35 Atividade em aula 36 Questão 1 – a 37 Questão 1 – b 38 Questão 1 – c 39 Questão 2 41 Sobre a P1 42 20% 35 30 25 20 15 10 5 0 0-1 1-2 2-3 3-4 4-5 5-6 6-7 7-8 8-9 9-10 26% 152 avaliações (2 turmas) 43