FIC MATLAB 2018-2: mudanças entre as edições
(21 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
Linha 14: | Linha 14: | ||
:'''Referência Complementar:''' MORAIS, V.. VIEIRA, C. '''MATLAB Curso Completo'''. FCA, 2013. 644. ISBN 9727227058 | :'''Referência Complementar:''' MORAIS, V.. VIEIRA, C. '''MATLAB Curso Completo'''. FCA, 2013. 644. ISBN 9727227058 | ||
:'''Tutorial''': [http://mtm.ufsc.br/~palomino/arquivos/matlab.pdf Bernardo Severo da Silva Filho, Curso de MATLAB 5.1] | |||
== Conteúdos Abordados == | == Conteúdos Abordados == | ||
Linha 700: | Linha 702: | ||
:2. A tabela abaixo mostra as temperaturas diárias (em Celsius) em três cidades diferentes. | :2. A tabela abaixo mostra as temperaturas diárias (em Celsius) em três cidades diferentes. | ||
<center> | |||
! | {| class="wikitable" | ||
! colspan="8" style="text-align: center; font-weight:bold;" | Temperatura | |||
|- | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Cidade | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Dia 1 | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Dia 2 | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Dia 3 | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Dia 4 | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Dia 5 | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Dia 6 | |||
| style="font-weight:bold; background-color:#c0c0c0;" | Dia 7 | |||
|- | |- | ||
| Palhoça || 10 || 13 || 6 || 5 || -1 || 10 || 4 | | Palhoça || 10|| 13|| 6|| 5|| -1|| 10|| 4 | ||
|- | |- | ||
| São José || 19 || 13 || 3 || 5 || 1 || 22 || 14 | | São José|| 19|| 13|| 3|| 5|| 1|| 22|| 14 | ||
|- | |- | ||
| Biguaçu || 30 || 2 || 3 || -1 || 10 || -2 || 40 | | Biguaçu|| 30|| 2|| 3|| -1|| 10|| -2|| 40 | ||
|} | |} | ||
</center> | |||
:Determine em quais dias: | :Determine em quais dias: | ||
Linha 740: | Linha 746: | ||
{{collapse top| bg=lightblue | 09/Out}} | {{collapse top| bg=lightblue | 09/Out}} | ||
* Uso de scripts: | |||
:* Editor de texto (''Editor'') | |||
:* Seções (''%%'') | |||
:* ''Publish'' | |||
* Controle de fluxo de dados: | * Controle de fluxo de dados: | ||
Linha 764: | Linha 776: | ||
:5. Implemente uma calculadora com as quatro operações básicas, recebendo a escolha de operação e números com o comando ''input''. Não se esqueça de implementar proteções para as entradas de dados (divisão por zero, vetores, etc). | :5. Implemente uma calculadora com as quatro operações básicas, recebendo a escolha de operação e números com o comando ''input''. Não se esqueça de implementar proteções para as entradas de dados (divisão por zero, vetores, etc). | ||
:6. Modifique o programa do cálculo do IMC de modo a informar ao usuário o grau de magreza/obesidade do indivíduo (veja [https://pt.wikipedia.org/wiki/%C3%8Dndice_de_massa_corporal#Classifica%C3%A7%C3%A3o aqui]). | :6. Modifique o programa do cálculo do IMC (Aula 6) de modo a informar ao usuário o grau de magreza/obesidade do indivíduo (veja [https://pt.wikipedia.org/wiki/%C3%8Dndice_de_massa_corporal#Classifica%C3%A7%C3%A3o aqui]). | ||
Linha 783: | Linha 795: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
=== 10 - Structs | === 10 - Structs === | ||
{{collapse top| bg=lightblue | 11/Out}} | {{collapse top| bg=lightblue | 11/Out}} | ||
* Estruturas | * Estruturas | ||
:* Criando estruturas com o comando ''struct'' | |||
:* Criando estruturas com o operador "." | :* Criando estruturas com o operador "." | ||
:* Comando ''isfield'' para identificar se um campo existe ou não | :* Comando ''isfield'' para identificar se um campo existe ou não | ||
:* Comando ''rmfield'' para remover campo da estrutura | :* Comando ''rmfield'' para remover campo da estrutura | ||
* Arranjo de estruturas | |||
* '''Exercícios:''' | * '''Exercícios:''' | ||
:1. Crie um arranjo de estruturas que contenha os os seguintes campos de informação concernentes a pontes rodoviárias em uma cidade: localização da ponte, carga máxima (toneladas), ano de construção, ano agendado para a manutenção. | :1. Crie um programa que utiliza duas estruturas: '''ponto''' e '''reta'''. | ||
::* A estrutura '''ponto''' deve ter como campos as coordenadas do ponto. | |||
::* A estrutura '''reta''' tem como campos os coeficientes angular e linear da reta. | |||
:: O seu programa deve requisitar do usuário as coordenadas do ponto e os coeficientes da reta. Como saída, seu programa deve | |||
::a) Plotar na tela (''plot'') uma figura contendo o ponto e a reta. | |||
::b) Imprimir na tela (''disp'') distância do ponto até a origem. | |||
::c) Imprimir na tela (''disp'') se o ponto pertence à reta. | |||
:: Para testar seu programa: o ponto (3, 4) dista da origem de 5 unidades e pertence à reta ''y = 2x - 2''. | |||
:2. Crie uma estrutura que contenha todas as informações necessárias para construir um diagrama de um conjunto de dados. No mínimo, a estrutura deve conter os seguintes campos: | |||
::* '''x_data''': dado referente ao eixo "x" | |||
::* '''y_data''': dado referente ao eixo "y" | |||
::* '''title''': título do diagrama | |||
::* '''x_label''': rótulo do eixo "x" | |||
::* '''y_label''': rótulo do eixo "y" | |||
::* '''x_range''': faixa de valores exibidos no eixo "x" | |||
::* '''y_range''': faixa de valores exibidos no eixo "y" | |||
:: Você pode adicionar outros campos que aumentem seu controle sobre o diagrama final. | |||
:: Depois de criar essa estrutura, escreva um programa no MATLAB que use a estrutura para gerar um gráfico. O programa deve aplicar características iniciais inteligentes se alguns campos de dados estiverem faltando. | |||
:3. Crie um arranjo de estruturas que contenha os os seguintes campos de informação concernentes a pontes rodoviárias em uma cidade: localização da ponte, carga máxima (toneladas), ano de construção, ano agendado para a manutenção. | |||
::a) Insira os dados abaixo na estrutura: | ::a) Insira os dados abaixo na estrutura: | ||
Linha 830: | Linha 867: | ||
::c) Adicione a seguinte ponte ao arranjo de estruturas: | ::c) Adicione a seguinte ponte ao arranjo de estruturas: | ||
:::{| class="wikitable" | :::{| class="wikitable" | ||
Linha 844: | Linha 880: | ||
|} | |} | ||
* [[FIC_MATLAB_2018-2/Aula-10|Códigos executados em sala]] | |||
{{collapse bottom}} | |||
=== 11 - Cells === | |||
{{collapse top| bg=lightblue | 16/Out}} | |||
* Arranjo de células: texto e números | * Arranjo de células: texto e números | ||
Linha 865: | Linha 895: | ||
* '''Exercícios''': | * '''Exercícios''': | ||
:1. Repita os exercícios | :1. Repita os exercícios da Aula 10 usando células | ||
* [[FIC_MATLAB_2018-2/Aula- | * [[FIC_MATLAB_2018-2/Aula-11|Códigos executados em sala]] | ||
{{collapse bottom}} | {{collapse bottom}} | ||
=== | === 12 - Estruturas de repetição - ''for'' e ''while'' === | ||
{{collapse top| bg=lightblue | | {{collapse top| bg=lightblue | 18/Out}} | ||
* Estruturas de repetição: | * Estruturas de repetição: | ||
Linha 885: | Linha 915: | ||
* '''Exercícios:''' | * '''Exercícios:''' | ||
:1. Acrescente à calculadora a possibilidade de continuar realizando cálculos até que o usuário solicite a saída digitando 's'. | :1. Acrescente à calculadora (Aula 9) a possibilidade de continuar realizando cálculos até que o usuário solicite a saída digitando 's'. | ||
:2. Escreva um programa que calcule o fatorial de um número, utilizando ''for'' e ''while''. | :2. Escreva um programa que calcule o fatorial de um número, utilizando ''for'' e ''while''. | ||
Linha 941: | Linha 971: | ||
* [[FIC_MATLAB_2018-2/Aula- | * [[FIC_MATLAB_2018-2/Aula-12|Códigos executados em sala]] | ||
{{collapse bottom}} | {{collapse bottom}} | ||
=== | === 13 - Funções === | ||
{{collapse top| bg=lightblue | | {{collapse top| bg=lightblue | 23/Out}} | ||
* Funções definidas pelo usuário | * Funções definidas pelo usuário | ||
Linha 957: | Linha 987: | ||
*'''Exercícios:''' | *'''Exercícios:''' | ||
:1. | :1. Escreva as seguintes funções: | ||
::a) Uma função que retorna a média aritmética e a média geométrica de dois dados números. | |||
::b) Modifique o programa do IMC (Aula 9) para que ele seja calculado a partir da chamada de uma função. | |||
::c) Uma função que retira um caracter (passado no primeiro argumento da função) de uma string (passada no segundo argumento da função) | |||
:2. Escreva uma função que | :2. Escreva uma função que determina o tempo (em anos) necessário para que você acumule pelo menos VF (em dólares) em uma conta bancária se você depositar inicialmente V0 (em dólares) e mais P (em dólares) ao final de cada ano, com um rendimento anual de R%. | ||
:3. Escreva | :3. Escreva as seguintes funções: | ||
::a) Uma função que calcule o fatorial de um número; | |||
::b) Uma função que calcule os n primeiros termos da sequência de Fibonacci, dispondo-os num vetor; | |||
::c) Inclua proteções para usuário (para o caso em que o usuário tenha passado algo diferente do esperado como argumento) nas duas funções anteriores. | |||
:4 | :4. Escreva uma função que implementa a [https://pt.wikipedia.org/wiki/Cifra_de_C%C3%A9sar Cifra de César]. A entrada da função deve ser: | ||
::* O ''string'' a ser codificado/decodificado; | ::* O ''string'' a ser codificado/decodificado; | ||
::* O deslocamento a ser aplicado em cada letra do ''string'', podendo ser um inteiro positivo (deslocamento para a direita) ou negativo (deslocamento para a esquerda). | ::* O deslocamento a ser aplicado em cada letra do ''string'', podendo ser um inteiro positivo (deslocamento para a direita) ou negativo (deslocamento para a esquerda). | ||
: | :5. Escreva uma função que retorna todos os números primos menores ou iguais a um dado inteiro ''n''. Utilize o algoritmo do [https://pt.wikipedia.org/wiki/Crivo_de_Erat%C3%B3stenes Crivo de Eratóstenes]. | ||
* [[FIC_MATLAB_2018-2/Aula- | * [[FIC_MATLAB_2018-2/Aula-13|Códigos executados em sala]] | ||
{{collapse bottom}} | {{collapse bottom}} | ||
=== | === 14 - Processamento de imagens === | ||
{{collapse top| bg=lightblue | | {{collapse top| bg=lightblue | 25/Out}} | ||
<!--'''Pro futuro:''' Usar ''im2double''!--> | <!--'''Pro futuro:''' Usar ''im2double''!--> | ||
Linha 998: | Linha 1 023: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
=== | === 15 - Importação de dados; Gráficos em 2D e 3D === | ||
{{collapse top| bg=lightblue | | {{collapse top| bg=lightblue | 30/Out}} | ||
* Importação de dados | * Importação de dados | ||
Linha 1 138: | Linha 1 163: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
=== | === 16 - Solução de sistemas de equações; Toolbox simbólico === | ||
{{collapse top| bg=lightblue | | {{collapse top| bg=lightblue | 01/Nov}} | ||
* Sistemas de equações lineares | * Sistemas de equações lineares | ||
Linha 1 147: | Linha 1 172: | ||
::* Exemplo: Balanceamento de equações químicas | ::* Exemplo: Balanceamento de equações químicas | ||
:::::<math>C_3 H_8 + O_2 \longrightarrow CO_2 + H_2 O</math> | :::::<math>C_3 H_8 + O_2 ~~~ \longrightarrow ~~~ CO_2 + H_2 O</math> | ||
:::::<math>x (C_3 H_8) + y (O_2) \longrightarrow z (C O_2) + w (H_2 O)</math> | :::::<math>x (C_3 H_8) + y (O_2) ~~~ \longrightarrow ~~~ z (C O_2) + w (H_2 O)</math> | ||
:::::<math>\begin{cases} | :::::<math>\begin{cases} | ||
Linha 1 204: | Linha 1 229: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
=== | === 17 - Interface gráfica === | ||
{{collapse top| bg=lightblue | | {{collapse top| bg=lightblue | 06/Nov}} | ||
[[Curso Matlab aplicado ao processamento de imagens - Aula 2|Aula]] | [[Curso Matlab aplicado ao processamento de imagens - Aula 2|Aula]] | ||
Linha 1 378: | Linha 1 403: | ||
[[FIC_MATLAB_2018-2/Aula-16|Códigos executados em sala]] | [[FIC_MATLAB_2018-2/Aula-16|Códigos executados em sala]] | ||
{{collapse bottom}} | {{collapse bottom}} | ||
Linha 1 407: | Linha 1 424: | ||
=== 20 - Projeto === | === 20 - Projeto === | ||
{{collapse top| bg=lightblue | | {{collapse top| bg=lightblue | 20/Nov}} | ||
Aula dedicada ao projeto. | Aula dedicada ao projeto. |
Edição atual tal como às 18h10min de 6 de novembro de 2018
1 Informações Básicas
- Código: MLB16470
- Professores: Diego da Silva de Medeiros e Roberto Wanderley da Nóbrega
- Início: 11/Set/2017
- Término: 20/Nov/2017
- Horário: Terças e quintas, das 19h às 22h
- Referência Básica: PALM, William J. Introdução ao MATLAB para engenheiros. Tradução de Tales Argolo Jesus. 3. ed. Porto Alegre: AMGH, 2013. xiv, 562, il. ISBN 9788580552041
- Referência Complementar: MORAIS, V.. VIEIRA, C. MATLAB Curso Completo. FCA, 2013. 644. ISBN 9727227058
2 Conteúdos Abordados
2.1 1 - Apresentação da disciplina; Interface do MATLAB; Operadores; Funções; Constantes especiais; Formatos de exibição
11/Set - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Observações:
|
2.2 2 - Vetores e matrizes
13/Set |
---|
|
2.3 3 - Operações com matrizes; Plots
18/Set | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2.4 4 - Aula de exercícios
2.5 5 - Endereçamento de vetores e matrizes
25/Set |
---|
|
2.6 6 - Concatenação de matrizes; Texto; Entrada e saída de dados; Conjuntos; Polinômios; Números aleatórios
27/Set |
---|
|
2.7 7 - Aula de exercícios
02/Out | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2.8 8 - Variáveis lógicas; Operadores relacionais e lógicos
04/Out | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2.9 9 - Controle de fluxo de dados - if e switch
09/Out |
---|
|
2.10 10 - Structs
11/Out | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2.11 11 - Cells
16/Out |
---|
|
2.12 12 - Estruturas de repetição - for e while
18/Out | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2.13 13 - Funções
23/Out |
---|
|
2.14 14 - Processamento de imagens
2.15 15 - Importação de dados; Gráficos em 2D e 3D
30/Out | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2.16 16 - Solução de sistemas de equações; Toolbox simbólico
01/Nov |
---|
|
2.17 17 - Interface gráfica
06/Nov | ||
---|---|---|
|
2.18 18 - Projeto
08/Nov |
---|
Aula dedicada ao projeto. |
2.19 19 - Projeto
13/Nov |
---|
Aula dedicada ao projeto. |
2.20 20 - Projeto
20/Nov |
---|
Aula dedicada ao projeto. |
3 Questões da turma
4 Projetos finais
4.1 Ideias
4.1.1 Hachuras em gráficos de barras
Implementar uma função em MATLAB que plote um gráfico de barras com hachuras. O comportamento deve ser semelhante ao comando bar, nativo do MATLAB, mas parâmetros poderão ser acrescentados para controle da trama. Um exemplo de resultado pode ser visto na figura abaixo:

4.1.2 Genius®
Implementar uma versão avançada do jogo Genius® construído na aula 9, adicionando sons, elementos gráficos, etc.
4.1.3 Outros
- relógio analógico
- dtmf
- sudoku
- jogo da velha
- contar moedas
- esteganografia
- batalha naval