Anda di halaman 1dari 30

Computação Cientı́fica com MATLAB

Melissa Weber Mendonça


melissa.mendonca@ufsc.br
Aula passada...

I Algoritmos: conceito; tipos de dados; scripts;


I Modo interativo do MATLAB: familiarização com o software;
comandos de entrada e saı́da; comandos de atribuição;
manipulação de variáveis; funções básicas;
I Variáveis indexadas: vetores; matrizes.
I Processos de repetição: o comando for, o comando while
Hoje

I Mais matrizes;
I Condicionais: o comando if no MATLAB;
I Células e estruturas;
I Leitura e escrita em arquivos;
I Importação de dados (wizard)
Slicing

I A(i,j)
I A(i,:)
I A(:,j)
I A(:,:)
I A(:)
I A(1:2,:)
I A(1,2:3)
Apagando elementos

Podemos apagar elementos de matrizes (ou linhas/colunas


inteiras) usando a seguinte sintaxe:

>> A(i,:) = []
>> A(:,j) = []
Append

Em uma lista, podemos acrescentar elementos a qualquer


momento:

>> lista = [1,3,4,5]


>> lista = [lista 2]
>> lista
Dica

As operações acima também se aplicam a texto!

>> frase = ’Oi, como vai?’


>> frase = [frase(1:length(frase)-1) ’ voc^
e?’]
>> frase = strcat(’Oi,’,’ como’,’ vai’,’ voc^
e?’)

Atenção: strcat não preserva os espaços em branco.


Reshape

Podemos facilmente mudar o tamanho e o formato de uma matriz


ou vetor usando o comando reshape:

>> reshape(A,m,n)
if - else - end

O if (“se”) representa uma sentença lógica condicional:

Se (sentença lógica) ent~


ao
faça (1)
Sen~
ao
faça (2)
Fim Se
if - else - end

O if (“se”) representa uma sentença lógica condicional:

if (sentença lógica)
faça (1)
else
faça (2)
end

Em Matlab, uma sentença lógica pode ter dois valores:

0 (Falso) ou 1 (Verdadeiro)
Comparação

Para comparar dois números a e b, usamos os seguintes sinais em


MATLAB:
I a é igual a b? a == b
I a é maior que b? a > b
I a é menor que b? a < b
I a é maior ou igual a b? a >= b
I a é menor ou igual a b? a <= b
I a é diferente de b? a ∼= b
Importante

Atenção: ao compararmos números reais, devemos tomar cuidado


com erro de arredondamento e a representação por ponto
flutuante.

Exemplo:
>> 3-1.1-0.9
ans =
1.0000
>> 1 == (3-1.1-0.9)
ans =
0 (falso!)
ElseIf

Nos casos em que precisamos de mais de 2 alternativas, podemos


usar um atalho: elseif.
if (sentença lógica)
faça (1)
elseif
faça (2)
else
faça (3)
end
e - &&

Muitas vezes, precisamos agrupar valores lógicos.


Exemplo: Se uma pessoa for homem e tiver mais de 18 anos, deve
se inscrever no serviço militar.

Se g^enero == homem ent~ ao


Se idade >= 18 ent~ ao
Inscreva-se no serviço militar.
Sen~ao
Voc^
e está liberado!
Fim Se
Sen~
ao
Voc^e está liberada!
Fim Se
e - &&

Muitas vezes, precisamos agrupar valores lógicos.


Exemplo: Se uma pessoa for homem e tiver mais de 18 anos, deve
se inscrever no serviço militar.

Se (g^enero == homem) e (idade >= 18) ent~


ao
Inscreva-se no serviço militar.
Sen~
ao
Voc^e está liberado(a)!
Fim Se
e - &&

No Matlab: representamos o e por &&:

if (numero > 0) && (numero < 1)


disp(’Numero esta entre 0 e 1.’)
end
ou - ||

Exemplo: Como decidir se um carro precisa de uma primeira


revisão?

Se (idade do carro >= 1 ano)


Faça a revis~
ao.
Fim Se
Se (km >= 10.000)
Faça a revis~
ao.
Fim Se

Se qualquer uma das duas condições for satisfeita,


tomaremos a mesma decisão.
ou - ||

Exemplo: Como decidir se um carro precisa de uma primeira


revisão?

Se (idade do carro >= 1 ano) ou (km >= 10.000)


Faça a revis~
ao.
Fim Se
ou - ||

No Matlab: representamos o ou por ||:

if (numero > 0) ou (numero < 0)


disp(’Numero é diferente de zero.’)
end
Comparando texto

Se quisermos comparar os conteúdos das variáveis texto1 e


texto2, usamos a função

strcmp(texto1,texto2)

Cuidados:
I Um texto deve sempre ser informado entre aspas simples.
I ’sim’ 6= ’ sim’
I ’sim’ 6= ’Sim’
Se a diferença entra maiúsculas e minúsculas não for importante,
podemos usar a função strcmpi(texto1,texto2).
Transformando dados

I str2num: transforma texto em número


I num2str: transforma um número em texto

disp([’O vetor tem ’, num2str(length(v)), ’ entradas.’])

num2str(10) = ’10’ ← serve para imprimir um


número no meio de um texto.
str2num(’25’) = 25
str2num(’texto’) = ?
Estruturas de dados Heterogêneas

Muitas vezes, gostarı́amos de armazenar dados da seguinte forma:


Tı́tulo Núm. Páginas Datas de Empréstimo e Devolução
“Álgebra Linear” 205 12/08, 15/08
“Cálculo” 346 10/09, 12/09
“Geometria” 123 04/08, 05/09
“Topologia” 253 01/08, 04/09

Porém, estes dados são de natureza heterogênea: misturamos


texto (string), números e intervalos. Como armazenar isso em uma
só tabela no MATLAB?
Estrutura Cell

No MATLAB, podemos fazer o seguinte:


>> tabela = { ’Algebra Linear’, 205, [1208, 1508];
>> ’Calculo’, 346, [1009,1209];
>> ’Geometria’, 123, [0408,0509];
>> ’Topologia’, 253, [0108,0409] }
A célula funciona como uma matriz, mas aqui os ı́ndices são dados
sempre entre chaves: {}.
Comandos

Para ver o que está armazenado na variável tabela, basta usarmos


o comando
>> celldisp(tabela)
Para verificar o tamanho de uma célula, usamos o comando
>> size(tabela)
Para criar uma célula vazia com m por n elementos, usamos o
comando
>> tabela = cell(m,n)
Para apagar um elemento da célula, podemos usar a notação de
matriz vazia:
>> tabela{1,2} = []
Outras possibilidades...

Célula de células:
>> v = { {1, ’teste’, [1;2]};
{[0,3], 12, ’nome’, rand(4,4)} }
Neste caso, os elementos devem ser referenciados da seguinte
forma:
>> v{2}{1}
Outras possibilidades...

Vetor de células:
>> v = [ {1, ’teste’, [1;2]};
{[0,3], 12, ’nome’} ]
Cuidado! Aqui, as células devem ter a mesma dimensão para
ficarem em um vetor: se cada célula é 3 × 2, e temos 10 células, o
tamanho do vetor de células será 30 × 2.
Neste caso, os elementos devem ser referenciados da seguinte
forma:
>> v(2){1}
Mais comandos

Podemos, analogamente ao que fizemos com vetores, concatenar


células:
>> C1 = {’Joao’, 16}
>> C2 = {’Maria’, 18; ’Ricardo’, 13}
>> cola = {C1 C2} cuidado!
>> uniao = [C1; C2]
Estruturas

Outra maneira de armazenar dados heterogêneos é usar estruturas:


cada estrutura é composta de campos que podem conter quaisquer
tipos de dados (assim como as células), e que são referenciados
por nome. Para criarmos uma estrutura chamada dados com o
campo chamado Nome, podemos usar diretamente a sintaxe

>> dados.Nome = ’Melissa’

ou

>> dados = struct(’Nome’, ’Melissa’)


Importar dados

Para importarmos dados, o método mais fácil é utilizar a interface


gráfica do MATLAB, selecionando

File → Import Data

Para verificar os tipos de arquivo suportados e as funções


disponı́veis, consulte o Help.
xlsread

Para ler arquivos de planilha gerados pelo Microsoft Excel, usamos

>> [dados,texto,resto] = xlsread(arquivo)

Para ler os dados de uma planilha especı́fica do arquivo, usamos

>> [dados,texto,resto] = xlsread(arquivo,planilha)

Em sistemas com o Microsoft Excel instalado, pode-se usar

>> [dados,texto,resto] = xlsread(arquivo,-1)

para abrir uma janela do Excel e selecionar os dados a serem


importados interativamente.

Anda mungkin juga menyukai