FIC MATLAB 2017-1

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar

Informações Básicas

Professores: Diego da Silva de Medeiros e Roberto Wanderley da Nóbrega

Início: 06/Mar/2017
Término: 15/Mai/2017
Horário: Segundas e quartas, 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

Aula 1

06/Mar - Apresentação da disciplina, professores e alunos; Interface do MATLAB e operadores; Utilização básica (comandos help, clear, …);
  • Janela de comandos;
  • Inserindo comandos na Command Window;
  • Utilização do ponto e vírgula (;) para não aparecer na Command Window;
  • Variável ans;
  • Operadores:
Símbolo Operação Forma no Matlab
^ Exponenciação: a^b
* Multiplicação: a*b
/ Divisão à direita: a/b
\ Divisão à esquerda: a\b
+ Adição: a+b
- Subtração: a-b


  • Lista de Exercícios:

FIC Matlab 2016-2 Lista1.jpeg

  • Exemplos de help e lookfor;
  • Usando o arquivo .m (m file);
  • Limpeza:
  • Comando clear all para apagar todas variáveis;
  • Comando clc para apagar texto na Command Window;
  • Variáveis e constantes especiais:
Comandos Descrições
ans Variável temporária que contém a resposta mais recente.
eps Verifica a acurácia da precisão do ponto flutuante.
1i,1j A unidade imaginária .
Inf Infinito.
NaN Indica um resultado numérico indefinido.
pi O número .

Aula 2

08/Mar - Formatos de exibição; Definições de vetores e matrizes; Funções matemáticas; Plots
  • Formatos de exibição
Comando Descrição e exemplo
format short Quatro dígitos decimais (padrão); 13.6745
format long 16 dígitos; 17.27484029463547
format short e Cinco dígitos (quatro decimais) mais o expoente; 6.3792e+03
format long e 16 dígitos (15 decimais) mais o expoente; 6.379243784781294e-04
format bank Dois dígitos decimais; 126.73
format + Positivo, negativo ou zero; +
format rat Aproximação racional; 43/7
format compact Suprime algumas linhas em branco
format loose Restabelece o modo de exibição menos compacto
  • Vetores e matrizes
  • Definições de vetores
  • Definições de matrizes
  • Comando length e size
  • Arranjo de vetor utilizando dois pontos (:)
  • Definição de passo
  • Criação de vetor igualmente espaçamento: linear (linspace) e logarítmico (logspace)
  • Definições de matrizes eye, zeros e ones
  • Usando length e size na criação de matrizes
  • Transposição de vetor ou matriz com o apóstrofo ( .' )
  • Operações
  • Soma e diferença de matrizes
  • Produto matricial
  • Produto e divisão elemento a elemento de matrizes
  • Potenciação
  • Comandos sum e prod
  • Norma (norm), máximo (max) e mínimo (min)
  • Cálculo de determinante (det) e inversa (inv) de uma matriz
Matlab EX1.jpg
Matlab EX2.jpg
Matlab EX4.jpg
Matlab EX5.jpg


  • Funções Matemáticas
Função Sintaxe no Matlab
exp(x)
sqrt(x)
ln x log(x)
log10(x)
log2(x)
cos x cos(x)
sen x sin(x)
tan x tan(x)
cos-1x acos(x)
sen-1x asin(x)
tan-1x atan(x)

utilizando d após as funções sin, cos e tan e suas inversas, faz o cálculo em graus

  • Plots:
  • Comandos plot, stem e bar de uma função
  • Comando hold on para manter a curva no gráfico
  • Comando grid on para mostrar linhas em forma de grade
  • Nomes aos eixos com xlabel e ylabel
  • Comando title
  • Tipos de axis: Escala automática, equal, square e definido manualmente

Aula 3

13/Mar - Plots; Indexação de vetores e matrizes
  • Revisão plots:
  • Comandos plot, stem e bar de uma função
  • Comando hold on para manter a curva no gráfico
  • Comando grid on para mostrar linhas em forma de grade
  • Nomes aos eixos com xlabel e ylabel
  • Comando title
  • Tipos de axis: Escala automática, equal, square e definido manualmente
  • Outros comandos relacionados a plotagem:
  • Comando figure
  • Comando subplot
  • Comando legend
  • Comando close all para fechar todas figuras
  • Comando fplot e comparação com plot
  • Especificadores de linha, cores e marcadores:
Tipo de linha Símbolo
Sólida (padrão) -
Tracejada --
Tracejada com pontos -.
Com pontos :
Cores Símbolo
Preto k
Azul b
Ciano c
Verde g
Magenta m
Vermelho r
Branco w
Amarelo y
Marcadores de dados Símbolo
Ponto .
Asterisco *
Cruz x
Círculo o
Adição +
Quadrado s
Losango d
Triângulo apontando pra cima ^
Triângulo apontando pra baixo v
Triângulo apontando pra direita >
Triângulo apontando pra esquerda <
Estrela de 5 pontas p
Estrela de 6 pontas h
  • Exercícios
  • Faça o plot de cada uma das funções matemáticas vistas na aula passada. Use cores, hold on, subplots, etc.
  • Exercício: Plotar a função de -4 até 4 e encontrar as raízes por Bhaskara.
  • Resolver os exercícios abaixo
Matlab EX6.jpg
Matlab EX7.jpg
  • Exercício (livro - T5.1-2 p. 224): Utilize o comando fplot para investigar a função para . Quantos valores de aproximadamente são necessários para que seja obtida a mesma plotagem utilizando-se o comando plot?
  • Exercício: Fazer o plot de um sinal de tensão x tempo, como da figura abaixo:
  • de até → função seno:
  • de até → 0
  • de até → 1
  • de até → -1
Não esquecer de nomear os eixos.
Exercícios Aula 3 FIC Matlab.jpg
  • Endereçamento de vetores e matrizes
  • Indexação de um elemento
  • Índice
  • Subscrito
  • Submatrizes
  • Índice
  • Subscrito
  • Indexação/submatrizes do lado esquerdo vs do lado direito
  • Palavra-chave end
  • Exclusão de linha ou coluna
  • Exercícios
  • Resolver os exercícios abaixo
Matlab EX2a.jpg
Matlab EX8.jpg
Matlab EX9.jpg

Aula 4

15/Mar - Aula de exercícios

Aula dedicada à execução dos exercícios das aulas anteriores.

Código de série de Fourier de uma onda quadrada

Aula 5

20/Mar - Endereçamento lógico; Concatenação de matrizes; Polinômios
  • Endereçamento de vetores e matrizes
  • Lógico
  • Concatenação de vetores e matrizes
  • Comandos sort e find
  • Comandos mean, ceil, floor e round
  • Exercício (livro - 16 p. 101): A tabela a seguir mostra o salário por hora, as horas de trabalho e a produção (número de dispositivos produzidos) em uma semana para cinco fabricantes de dispositivos.


Trabalhador 1 Trabalhador 2 Trabalhador 3 Trabalhador 4 Trabalhador 5
Salário por hora ($) 5,00 5,50 6,50 6,00 6,25
Horas de trabalho (h) 40 43 37 50 45
Produção (dispositivos) 1000 1100 1000 1200 1100


Utilize o MATLAB para responder essas questões:
a) Quanto cada trabalhador lucrou na semana?
b) Qual foi o salário total pago?
c) Quantos dispositivos foram fabricados?
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?
f) Assumindo que a produção de cada trabalhador tenha a mesma qualidade, qual trabalhador é o mais eficiente? Qual é o menos eficiente?


  • Produto escalar (dot) e produto vetorial (cross) de dois vetores
  • Exercício: Calcule o produto vetorial e escalar dos vetores:
  • Polinômios
  • Representação de polinômios a partir de vetores
  • Comandos polyval, poly e roots
  • Multiplicação de polinômios (conv)
  • Divisão de polinômios (deconv), com ou ser resto
  • Comandos polyder e polyint
  • Exemplo: Livro página 88
  • Resolver os exercícios abaixo
Matlab poly EX1.jpg
Matlab poly EX2.jpg
Matlab poly EX3.jpg
Matlab poly EX4.jpg
Matlab poly EX5.jpg

Aula 6

22/Mar - Texto; Entrada e saída; Estruturas; Células
  • Trabalhando com texto
  • Entrada/Saída de dados e Texto
  • Comando input para entrada de dados
  • Comando disp e num2str
  • Exercício: Criar uma calculadora de IMC com perguntas (input) para massa e altura, aparecendo na sequência o resultado
  • Arranjo de células: texto e números
  • Comando celldisp e cellplot
  • Estruturas
  • Criando estruturas com o operador "."
  • Criando estruturas com o comando struct
  • Comando isfield para identificar se um campo existe ou não
  • Comando rmfield para remover campo da estrutura
Matlab Struct1.jpg
Matlab Struct2.jpg

Aula 7

27/Mar - Operadores; Scripts; Controle de fluxo de dados
  • Operadores:
  • Variáveis lógicas:
  • Comando logical
  • Operadores relacionais:
Operador relacional Significado
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
== Igual a
~= Não é igual a
  • Operadores lógicos (vetores):
Operador Nome
& AND
OR
~ NOT
xor(a,b) XOR
  • Operadores lógicos curto-circuito:
Operador Nome
&& AND
OR
  • Controle de fluxo de dados:
  • As sentenças if, else e elseif
  • Exercício: Criar um código que calcula o valor gasto total (em R$) e o peso total (em kg) da compra de algumas unidades de arroz (5 kg), feijão (1 kg) e café (500 g).
  • O usuário deve fornecer quantas unidades quer comprar de cada produto (comando input).
  • Os dados devem ser validados: verificar se o usuário forneceu alguma quantidade negativa.
  • Condições de compra:
  1. O preço unitário do arroz é R$15,00. Se comprar 3 ou mais, o preço cai para R$14,00 cada.
  2. O preço unitário do feijão é R$12,00. Se comprar 4 ou mais, o preço cai para R$11,50 cada.
  3. O preço unitário do café é R$10,00. Se comprar 3 ou mais, o preço cai para R$9,25 cada.

Aula 8

29/Mar - Switch; Estruturas de repetição
  • Sentença switch
  • Exercício (livro - Exemplo 4.7-1 p. 189): Utilize a estrutura switch para calcular o total de dias decorridos em um ano. Entrada de dados: o número do mês (1 até 12), o dia e a indicação de o ano ser bissexto ou não.
  • Exercício: Reescreva o código da calculadora executado em sala fazendo o uso da sentença switch.


  • Estruturas de repetição:
  • Laços for
  • Laços while
  • Sentenças break e continue
  • Exercício: Acrescente à calculadora a possibilidade de continuar realizando cálculos até que o usuário solicite a saída digitando 's'.


Aula 9

03/Abr - Funções; Importação de dados
  • Função definida pelo usuário no arquivo .m
  • Exercício: Escreva uma função que retorna o fatorial de um número fornecido.
  • Exercício: Escreva uma função que retorna um vetor contendo os n primeiros termos da sequência de Fibonacci.
  • (Livro - Exemplo 4.6-2 p. 186) Exercício: 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%.
  • Exercício: Fazer o plot de um sinal de tensão x tempo, como da figura abaixo, usando os conceitos da aula de hoje.
  • de até → função seno:
  • de até → 0
  • de até → 1
  • de até → -1
Não esquecer de nomear os eixos.
Exercícios Aula 3 FIC Matlab.jpg


  • Importação de dados para o MATLAB
  • Pelo menu
  • Pelo comando uiimport

Exemplo: usar Celular4g‎.txt, importar e trabalhar com as funções de matrizes.

  • Padronizar para o formato que o Matlab reconhece os números: ponto (.) e (,);
  • Converter formato table2array.

Exercício: com o arquivo Add_user.txt (Adições Líquidas de Aparelhos 4G das Operadoras no período), calcular a soma dos anos 2014, 2015 e 2016 (até o momento) por operadora e a soma e a média por período.


Aula 10

05/Abr - Gráficos em 2D e 3D
  • Gráficos em 2D
  • Revisão: plot, stem e bars
  • stairs
  • semilogx, semilogy e loglog
  • polar
  • Exercício: Plote a função polar: de .
  • Números complexos e funções abs e angle
  • Gráfico com dois eixos em y (plotyy)
  • Exercício (livro - adaptado - 15 p. 254): As seguintes funções descrevem as oscilações em circuitos elétricos e as vibrações de máquinas e estruturas. Sobreponha as plotagens dessas funções no mesmo eixo. Como elas são similares, defina qual é a melhor forma de plotá-las e de rotulá-las para evitar confusão.
-0,5t
-0,4t
  • Letras gregas nos gráficos:
Letra Representação
\alpha
\beta
\gamma
\delta
\epsilon
\kappa
\lambda
\mu
\nu
\omega
\phi
\pi
\chi
\psi
\rho
\sigma
\tau
\upsilon
\Sigma
\Pi
\Lambda
\Omega
\Gamma


  • Gráficos em 3D
  • plot3
  • view
  • Exercício (livro - 28 p. 258): As equações paramétricas para uma hélice circular são:
em que é o raio do caminho helicoidal e é uma constante que determina a "estreiteza" do caminho. Além disso, se , a hélice tem a forma de um parafuso destro; se , a hélice tem a forma de um parafuso canhoto. Obtenha uma plotagem tridimensional da hélice para os três casos a seguir e compare-os. Utilize e .
a) ;
b) ;
c) .
  • Criar uma malha 3D com meshgrid
  • Plot de função de f(x,y) com mesh
[X,Y] = meshgrid(-20:0.5:20);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
  • Rótulo no eixo z: zlabel
  • Comando para fazer malha 3D com sombreamento: surf
  • Comando shading, com parâmetros flat, faceted e interp
  • Curva de níveis:
  • Curva de níveis com contour, com a possibilidade de escolha do número de curvas
  • Comando para fazer malha 3D com sombreamento e curvas de níveis na projeção: surfc;
  • Comando para fazer malha 3D e curvas de níveis na projeção: meshc;
  • Mostrar uma cortina no eixo Z:
  • Comando para fazer malha 3D se alongar em z nas extremidades: meshz
  • Comando para aparecer a malha 3D em apenas um sentido com waterfall


Arquivo:FIC Matlab Exercicios plot.pdf


Aula 11

10/Abr - Aula de exercícios

Aula dedicada à execução dos exercícios das aulas anteriores.


Aula 12

12/Abr - Processamento de imagens

Curso Matlab aplicado ao processamento de imagens - Aula 3


Códigos executados em sala

Aula 13

17/Abr - Toolbox simbólico

Básico

  • Comandos syms e sym
  • Comandos pretty e latex
  • Comando subs
  • Valores via argumento da função
  • Valores retirados do workspace
  • Comandos factor, expand, collect e simplify

Cálculo

  • Comando limit: Limites
  • Comando diff: Derivada primeira, segunda, terceira, etc.
Comando int: Integrais indefinidas e definidas
  • Interlúdio: comandos assume e assumptions
  • Comando taylor: Séries de Taylor
  • comando symsum: Somatórios / séries
  • Outros: dsolve, fourier, laplace, partfrac

Solução de equações

  • Comando solve


Códigos executados em sala

Aula 14

19/Abr - Interface gráfica

Aula

Proposta de Interface gráfica

function varargout = Interface(varargin) % INTERFACE MATLAB code for Interface.fig % INTERFACE, by itself, creates a new INTERFACE or raises the existing % singleton*. % % H = INTERFACE returns the handle to a new INTERFACE or the handle to % the existing singleton*. % % INTERFACE('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in INTERFACE.M with the given input arguments. % % INTERFACE('Property','Value',...) creates a new INTERFACE or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before Interface_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to Interface_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Interface

% Last Modified by GUIDE v2.5 19-Apr-2017 19:45:52

% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ...

                  'gui_Singleton',  gui_Singleton, ...
                  'gui_OpeningFcn', @Interface_OpeningFcn, ...
                  'gui_OutputFcn',  @Interface_OutputFcn, ...
                  'gui_LayoutFcn',  [] , ...
                  'gui_Callback',   []);

if nargin && ischar(varargin{1})

   gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

   [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

   gui_mainfcn(gui_State, varargin{:});

end % End initialization code - DO NOT EDIT

% --- Executes just before Interface is made visible. function Interface_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Interface (see VARARGIN)

handles.contador = 0; display(handles.contador) assignin('base','handles',handles)

% Choose default command line output for Interface handles.output = hObject;

% Update handles structure guidata(hObject, handles);

% UIWAIT makes Interface wait for user response (see UIRESUME) % uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line. function varargout = Interface_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure varargout{1} = handles.output;


% --- Executes on button press in btnDesenhar. function btnDesenhar_Callback(hObject, eventdata, handles) % hObject handle to btnDesenhar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

%Incrementa o contador handles.contador = handles.contador + 1; display(handles.contador) %handles

%Axis 1 hold(handles.axes1,'off')

amostras = [0:1:1000]; if not(isempty(str2num(get(handles.edtFrequencias,'String'))))

   Freq = str2num(get(handles.edtFrequencias,'String'))
   onda = 2*pi*Freq*0.001*amostras;
   plot(handles.axes1,sin(onda))
   grid(handles.axes1,'on')
   assignin('base','contador',handles.contador);
   assignin('base','hObject',hObject)
   % Update handles structure
   guidata(hObject, handles);
   if (get(handles.rbtCosseno,'Value') == 1)
       %Axis 2
       plot(handles.axes2,cos(onda))
       grid(handles.axes2,'on')
   elseif (get(handles.rbtTangente,'Value') == 1)
       %Axis 2
       plot(handles.axes2,tan(onda))
       grid(handles.axes2,'on')
       ylim(handles.axes2,[-2,2])
   else
       errordlg('Selecione uma onda de saída!')
   end

end % --- Executes on button press in rbtCosseno. function rbtCosseno_Callback(hObject, eventdata, handles) % hObject handle to rbtCosseno (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rbtCosseno set(hObject,'Value',1) set(handles.rbtTangente,'Value',0)


% --- Executes on button press in rbtTangente. function rbtTangente_Callback(hObject, eventdata, handles) % hObject handle to rbtTangente (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of rbtTangente set(hObject,'Value',1) set(handles.rbtCosseno,'Value',0)


function edtFrequencias_Callback(hObject, eventdata, handles) % hObject handle to edtFrequencias (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edtFrequencias as text % str2double(get(hObject,'String')) returns contents of edtFrequencias as a double


% --- Executes during object creation, after setting all properties. function edtFrequencias_CreateFcn(hObject, eventdata, handles) % hObject handle to edtFrequencias (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

   set(hObject,'BackgroundColor','white');

end </syntaxhighlight>

Aula 15

24/Abr - Projeto
relógio analógico
dtmf
sudoku
jogo da velha
contar moedas
esteganografia
batalha naval


Questões da turma

Exercícios Engenharia de Alimentos

[1]

Método explícito
clear all; close all; clc

alfa = 0.0000971;
II = 10;
N = 200;
L = 0.3;
tempo = 200;
a = 20;
k = 237;
h = 85;
Tf = -300;
T0 = 20;

% Cálculos

deltax = L/II;
deltat = tempo/N;
fon = alfa*deltat/deltax^2;

% Algoritmo

% Convergência
fon

if fon < 0.5
    
    T(1,1:II+1) = T0;
    
    for n = 1:N
        
        % i = 1
        T(n+1,1) = 2*fon * T(n,2) + (1 - 2*fon)*T(n,1);
        
        % Outros casos de i
        for ii = 2:II
            
            T(n+1,ii) = fon*T(n,ii+1) + (1 - 2*fon)*T(n,ii) + fon*T(n,ii-1);
            
        end
        
        % i = II+1
        T(n+1,II+1) = fon*(-2*deltax*h*(T(n,II+1) - Tf))/k + (1 - 2*fon)*T(n,II+1) + 2*fon*T(n,II);
    
    end
end

% Resultados
figure
surf(T)
view(0,90)
xlabel('x'); ylabel('t')


Projetos finais