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
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \tau } \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>


Questões da turma

Exercícios Engenharia de Alimentos

[1]

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

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

% Cálculos

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

% Algoritmo

% Convergência
fon

if fon < 0.5
    
    T(1,1:I+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 i = 2:I
            
            T(n+1,i) = fon*T(n,i+1) + (1 - 2*fon)*T(n,i) + fon*T(n,i-1);
            
        end
        
        % i = I+1
        T(n+1,I+1) = fon*(-2*deltax*h*(T(n,I+1) - Tf))/k + (1 - 2*fon)*T(n,I+1) + 2*fon*T(n,I);
    
    end
end

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