Mudanças entre as edições de "FIC MATLAB 2018-2"
(25 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 596: | Linha 598: | ||
::Utilize o MATLAB para responder essas questões: | ::Utilize o MATLAB para responder essas questões: | ||
:::a) Quanto cada trabalhador recebeu na semana? | :::a) Quanto cada trabalhador recebeu na semana? | ||
− | :::b) Qual foi o salário total pago? | + | :::b) Qual foi o salário total pago na semana? |
− | :::c) Quantos dispositivos foram fabricados? | + | :::c) Quantos dispositivos foram fabricados na semana? |
:::d) Qual é o custo médio para se produzir um dispositivo? | :::d) Qual é o custo médio para se produzir um dispositivo? | ||
:::e) Quantas horas são necessárias, em média, para se produzir um dispositivo? | :::e) Quantas horas são necessárias, em média, para se produzir um dispositivo? | ||
Linha 609: | Linha 611: | ||
::Crie uma figura contendo 3 plots: | ::Crie uma figura contendo 3 plots: | ||
− | ::* A função seno | + | ::* A função seno verdadeira |
::* A aproximação de Bhaskara I | ::* A aproximação de Bhaskara I | ||
::* O erro da aproximação | ::* O erro da aproximação | ||
Linha 616: | Linha 618: | ||
:::<math>h(t) = \frac{1}{2} g t^2 + v_0 t + h_0</math> | :::<math>h(t) = \frac{1}{2} g t^2 + v_0 t + h_0</math> | ||
:::<math>\displaystyle{v(t) = g t + v_0}</math> | :::<math>\displaystyle{v(t) = g t + v_0}</math> | ||
− | ::onde ''g'' é a aceleração da gravidade (-9,81 m/s²). Escreva um programa de MATLAB que desenhe a altura e a velocidade como função do tempo, utilizando o comando ''subplot''. Faça com que <math>h_0</math> e <math>v_0</math> sejam parâmetros da script. Não deixe de incluir as legendas apropriadas. | + | ::onde ''g'' é a aceleração da gravidade (-9,81 m/s²). A bola atingirá o solo em |
+ | :::<math>t_\mathrm{hit} = -\frac{v_0 + \sqrt{v_0^2 - 2 g h_0}}{g}.</math> | ||
+ | ::Escreva um programa de MATLAB que desenhe a altura e a velocidade como função do tempo, para <math>0 \leq t \leq t_\mathrm{hit}</math> utilizando o comando ''subplot''. Faça com que <math>h_0</math> e <math>v_0</math> sejam parâmetros da script. Não deixe de incluir as legendas apropriadas. | ||
:4. Joãozinho depositou <math>v_p = \text{BRL } 1.000,00</math> num fundo de investimento com taxa de juros <math>j = 0{,}8 %</math> ao mês. Faça um gráfico do saldo do investimento. Em quanto tempo o valor depositado será dobrado? Dica: [https://pt.wikipedia.org/wiki/Juro#Juros_compostos (link)] | :4. Joãozinho depositou <math>v_p = \text{BRL } 1.000,00</math> num fundo de investimento com taxa de juros <math>j = 0{,}8 %</math> ao mês. Faça um gráfico do saldo do investimento. Em quanto tempo o valor depositado será dobrado? Dica: [https://pt.wikipedia.org/wiki/Juro#Juros_compostos (link)] | ||
Linha 698: | 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 738: | 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 762: | 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 781: | 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 828: | 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 842: | 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 863: | 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 883: | 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 939: | 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 955: | 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 996: | 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 136: | 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 145: | 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 202: | 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 376: | 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 405: | 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
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
Conteúdos Abordados
1 - Apresentação da disciplina; Interface do MATLAB; Operadores; Funções; Constantes especiais; Formatos de exibição
11/Set - | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Observações:
|
2 - Vetores e matrizes
13/Set |
---|
|
3 - Operações com matrizes; Plots
18/Set | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
4 - Aula de exercícios
20/Set |
---|
|
5 - Endereçamento de vetores e matrizes
25/Set |
---|
|
6 - Concatenação de matrizes; Texto; Entrada e saída de dados; Conjuntos; Polinômios; Números aleatórios
27/Set |
---|
|
7 - Aula de exercícios
02/Out | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
8 - Variáveis lógicas; Operadores relacionais e lógicos
04/Out | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
9 - Controle de fluxo de dados - if e switch
09/Out |
---|
|
10 - Structs
11/Out | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
11 - Cells
16/Out |
---|
|
12 - Estruturas de repetição - for e while
18/Out | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
13 - Funções
23/Out |
---|
|
14 - Processamento de imagens
15 - Importação de dados; Gráficos em 2D e 3D
30/Out | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
16 - Solução de sistemas de equações; Toolbox simbólico
01/Nov |
---|
|
17 - Interface gráfica
06/Nov | ||
---|---|---|
|
18 - Projeto
08/Nov |
---|
Aula dedicada ao projeto. |
19 - Projeto
13/Nov |
---|
Aula dedicada ao projeto. |
20 - Projeto
20/Nov |
---|
Aula dedicada ao projeto. |
Questões da turma
Projetos finais
Ideias
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:
Genius®
Implementar uma versão avançada do jogo Genius® construído na aula 9, adicionando sons, elementos gráficos, etc.
Outros
- relógio analógico
- dtmf
- sudoku
- jogo da velha
- contar moedas
- esteganografia
- batalha naval