Mudanças entre as edições de "FIC MATLAB 2017-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(29 revisões intermediárias por 3 usuários não estão sendo mostradas)
Linha 636: Linha 636:
 
{{collapse top| bg=lightblue | 10/Abr - Aula de exercícios}}
 
{{collapse top| bg=lightblue | 10/Abr - Aula de exercícios}}
  
Aula dedicada à execução dos exercícios das aulas anteriores.  
+
Aula dedicada à execução dos exercícios das aulas anteriores.
 +
 
 +
 
 +
* [[FIC MATLAB 2017-1/Aula-11|Códigos executados em sala]]
 
<!--
 
<!--
 
Exercício (livro): Plote a parte imaginária ''versus'' a parte real da função <math>(0,2 + 8i)</math><sup>n</sup> para <math>0 \leq n \leq 20</math>. Escolha uma quantidade suficiente de pontos para obter uma curva suave. Rotule cada eixo e insira um título. Utilize o comando ''axis'' para alterar o espaçamento entro os rótulos dos ''tick-marks''.   
 
Exercício (livro): Plote a parte imaginária ''versus'' a parte real da função <math>(0,2 + 8i)</math><sup>n</sup> para <math>0 \leq n \leq 20</math>. Escolha uma quantidade suficiente de pontos para obter uma curva suave. Rotule cada eixo e insira um título. Utilize o comando ''axis'' para alterar o espaçamento entro os rótulos dos ''tick-marks''.   
Linha 649: Linha 652:
 
{{collapse bottom}}
 
{{collapse bottom}}
  
<!--
 
 
=== Aula 12 ===
 
=== Aula 12 ===
{{collapse top| bg=lightblue | 20/Set}}
+
{{collapse top| bg=lightblue | 12/Abr - Processamento de imagens}}
- Comparação de gráficos: ''plot'', ''loglog'', ''semilogx'' e ''semilogy''; 
 
Exercício (livro - T5.2-1 p. 228): Escolha um espaçamento adequado para ''t'' e ''v'', e utilize o comando ''subplot'' para plotar a função <math>x=e</math><sup>-0,5t</sup><math>cos(20t-6)</math> para <math>0 \leq t \leq 8</math> e a função <math>u=6 \log_{10}(v</math><sup>2</sup><math>+20)</math> para <math>-8 \leq v \leq 8</math>. Rotule cada eixo. Utilize os comandos ''semilogx'', ''semilogy'' ou ''loglog''. 
 
  
- Gráfico com dois eixos em ''y'' (''plotyy''); 
+
[[Curso Matlab aplicado ao processamento de imagens - Aula 3]]
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.
 
<math>x(t)=10e</math><sup>-0,5t</sup><math>sen(3t+2)</math>
 
<math>y(t)=7e</math><sup>-0,4t</sup><math>cos(5t-3)</math> 
 
  
- Letras gregas nos gráficos:
 
{| border="4" cellpadding="2"
 
! '''Letra'''
 
! '''Representação'''
 
|-
 
| <math> \alpha </math> || \alpha
 
|-
 
| <math> \beta </math> || \beta
 
|-
 
| <math> \gamma </math> || \gamma
 
|-
 
| <math> \delta </math> || \delta
 
|-
 
| <math> \epsilon </math> || \epsilon
 
|-
 
| <math> \kappa </math> || \kappa
 
|-
 
| <math> \lambda </math> || \lambda
 
|-
 
| <math> \mu </math> || \mu
 
|-
 
| <math> \nu </math> || \nu
 
|-
 
| <math> \omega </math> || \omega
 
|-
 
| <math> \phi </math> || \phi
 
|-
 
| <math> \pi </math> || \pi
 
|-
 
| <math> \chi </math> || \chi
 
|-
 
| <math> \psi </math> || \psi
 
|-
 
| <math> \rho </math> || \rho
 
|-
 
| <math> \sigma </math> || \sigma
 
|-
 
| <math> \tau </math> || \tau
 
|-
 
| <math> \upsilon </math> || \upsilon
 
|-
 
| <math> \Sigma </math> || \Sigma
 
|-
 
| <math> \Pi </math> || \Pi
 
|-
 
| <math> \Lambda </math> || \Lambda
 
|-
 
| <math> \Omega </math> || \Omega
 
|-
 
| <math> \Gamma </math> || \Gamma
 
|-
 
|}
 
  
- Funções ''stem'', ''stairs'' e ''bar''; 
+
[[FIC MATLAB 2017-1/Aula-12|Códigos executados em sala]]
Exercício: Plote em uma figura as funções <math>sen(x)</math>, usando ''stem''; <math>cos(x)</math>, usando ''stairs'' e em uma segunda figura <math>tg(x)</math>, usando ''bar''. Use um vetor <math>0 \leq x \leq 2\pi</math> com no máximo 100 posições. 
+
 
 
{{collapse bottom}}
 
{{collapse bottom}}
  
 
=== Aula 13 ===
 
=== Aula 13 ===
{{collapse top| bg=lightblue | 22/Set}}
+
{{collapse top| bg=lightblue | 17/Abr - Toolbox simbólico}}
  
- Função ''polar'';
+
'''Básico'''
Exercício: Plote a função polar: <math>rho = sen(2\theta)*cos(2\theta)</math> de <math>0 \leq \theta \leq 2\pi</math>. 
 
  
- Mudar a espessura da linha com ''linewidth'';
+
* Comandos ''syms'' e ''sym''
- Mudar o tamanho da fonte com ''fontsize''
+
* Comandos ''pretty'' e ''latex''
- Mudar os eixos com ''gca''
+
* Comando ''subs''
- Mudar a localização com ''location'', orientação com ''orientation'' e tamanho da fonte com ''fontsize'' no quadro da legenda;
+
:* Valores via argumento da função
- Ver a trajetória da função ''comet''
+
:* Valores retirados do workspace
- Barras de erro de aproximação com ''errorbar'';
+
* Comandos ''factor'', ''expand'', ''collect'' e ''simplify''
  
Exercício (livro - adaptado - 10 p.253): Muitas aplicações utilizam a seguinte aproximação de "ângulo pequeno" para o seno com a finalidade de se obter um modelo mais simples que seja fácil de ser entendido e analisado. A aproximação estabelece que ''sen(x)'' <math>\simeq x</math>, em que ''x'' deve ser em radianos. Investigue a precisão desta aproximação com dois plotes. No primeiro, plote ''sen(x) versus x'' para <math>0 \leq x \leq 1</math>. No segundo, plote o erro da aproximação ''(sen(x) - x) versus x'' para <math>0 \leq x \leq 1</math>. 
+
'''Cálculo'''
  
- Plot em 3 dimensões com ''plot3'';
+
* Comando ''limit'': Limites
 +
:* <math>\lim_{x \to 0} \frac{\sin(x)}{x}</math>
 +
:* <math>\lim_{x \to \infty} \left( 1 + \frac{1}{x} \right)^x</math>
 +
* Comando ''diff'': Derivada primeira, segunda, terceira, etc.
 +
: Comando ''int'': Integrais indefinidas e definidas
 +
:* <math>\int x^a dx</math>
  
Exercício (livro - 28 p. 258): As equações paramétricas para uma hélice circular são:
+
* Interlúdio: comandos ''assume'' e ''assumptions''
<math>x = a*cos(t)</math>
+
 
<math>y = a*sen(t)</math>
+
* Comando ''taylor'': Séries de Taylor
<math>z = b*t </math>
+
* comando ''symsum'': Somatórios / séries
em que <math>a</math> é o raio do caminho helicoidal e <math>b</math> é uma constante que determina a "estreiteza" do caminho. Além disso, se <math>b > 0</math>, a hélice tem a forma de um parafuso destro; se <math>b < 0</math>, 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 <math>0 \leq t \leq 10\pi</math> e <math>a = 1</math>. 
+
 
a) <math> b = 0,1</math>; 
+
* Outros: ''dsolve'', ''fourier'', ''laplace'', ''partfrac''
b) <math> b = 0,2</math>; 
+
 
c) <math> b = -0,1</math>. 
+
'''Solução de equações'''
 +
 
 +
* Comando ''solve''
 +
 
 +
 
 +
[[FIC MATLAB 2017-1/Aula-13|Códigos executados em sala]]
  
- Criar uma malha 3D com ''meshgrid''; 
 
- Plot de função de ''f(x,y)'' com ''mesh''; 
 
- Rótulo no eixo z: ''zlabel'';
 
- Curva de níveis com ''contour'', com a possibilidade de escolha do número de curvas; 
 
- Possibilidade de aparecer ou não os valores das curvas com o comando ''showtext'' seguido de ''on'';
 
- Comando para aparecer a malha 3D em apenas um sentido com ''waterfall'';
 
- Comando para fazer malha 3D com sombreamento: ''surf'';
 
- 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'';
 
- Comando para fazer malha 3D se alongar em ''z'' nas extremidades: ''meshz'';
 
 
{{collapse bottom}}
 
{{collapse bottom}}
  
 
=== Aula 14 ===
 
=== Aula 14 ===
{{collapse top| bg=lightblue | 27/Set}}
+
 
 +
{{collapse top| bg=lightblue | 19/Abr - Interface gráfica}}
 +
 
 +
[[Curso Matlab aplicado ao processamento de imagens - Aula 2|Aula]]
 +
 
 +
{{collapse top| bg=lightblue | Proposta de Interface gráfica}}
 +
<code>
 +
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>
 +
{{collapse bottom}}
 +
 
 +
{{collapse bottom}}
 +
 
 +
=== Aula 15 ===
 +
{{collapse top| bg=lightblue | 24/Abr - Projeto}}
 +
 
 +
:relógio analógico
 +
:dtmf
 +
:sudoku
 +
:jogo da velha
 +
:contar moedas
 +
:esteganografia
 +
:batalha naval
 +
 
 +
{{collapse bottom}}
 +
<!--
 +
 
 
Exercício (livro - 30 p. 259): Obtenha as plotagens de superfície e de contorno para a função <math>z = x</math><sup>2</sup><math>- 2xy + 4y</math><sup>2</sup>, mostrando o mínimo em <math>x = y = 0 </math>.  
 
Exercício (livro - 30 p. 259): Obtenha as plotagens de superfície e de contorno para a função <math>z = x</math><sup>2</sup><math>- 2xy + 4y</math><sup>2</sup>, mostrando o mínimo em <math>x = y = 0 </math>.  
  
Linha 774: Linha 905:
  
 
- Comando ''flip'', representa o vetor de trás pra frente;
 
- Comando ''flip'', representa o vetor de trás pra frente;
 
{{collapse bottom}}
 
 
=== Aula 15 ===
 
{{collapse top| bg=lightblue | 29/Set}}
 
  
 
Exercício (livro - adaptado - exemplo 6.2-2 p. 278): A tabela a seguir fornece dados de crescimento de uma determinada população de bactérias com o tempo. Ajuste uma equação para esses dados, calcule o coeficiente de ajuste e estime o fluxo no tempo 18 min. Plote a curva escolhida.
 
Exercício (livro - adaptado - exemplo 6.2-2 p. 278): A tabela a seguir fornece dados de crescimento de uma determinada população de bactérias com o tempo. Ajuste uma equação para esses dados, calcule o coeficiente de ajuste e estime o fluxo no tempo 18 min. Plote a curva escolhida.
Linha 803: Linha 929:
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
  
 
=== Aula 16 ===
 
=== Aula 16 ===
Linha 836: Linha 963:
 
d) Suponha que os lucros sejam de $200, $500 e $100 para cada produto 1, 2 e 3, respectivamente. Encontre os valores de ''x'', ''y'' e ''z'' que maximizam os lucros.   
 
d) Suponha que os lucros sejam de $200, $500 e $100 para cada produto 1, 2 e 3, respectivamente. Encontre os valores de ''x'', ''y'' e ''z'' que maximizam os lucros.   
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
  
 
=== Aula 17 ===
 
=== Aula 17 ===
Linha 895: Linha 1 023:
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
  
 
=== Aula 18 ===
 
=== Aula 18 ===
Linha 911: Linha 1 040:
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
  
 
=== Aula 19 ===
 
=== Aula 19 ===
Linha 923: Linha 1 053:
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
  
 
=== Aula 20 ===
 
=== Aula 20 ===
Linha 931: Linha 1 062:
  
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
-->
  
-->
 
  
 
== Questões da turma ==
 
== Questões da turma ==
Linha 945: Linha 1 076:
  
 
alfa = 0.0000971;
 
alfa = 0.0000971;
I = 10;
+
II = 10;
 
N = 200;
 
N = 200;
 
L = 0.3;
 
L = 0.3;
Linha 957: Linha 1 088:
 
% Cálculos
 
% Cálculos
  
deltax = L/I;
+
deltax = L/II;
 
deltat = tempo/N;
 
deltat = tempo/N;
 
fon = alfa*deltat/deltax^2;
 
fon = alfa*deltat/deltax^2;
Linha 968: Linha 1 099:
 
if fon < 0.5
 
if fon < 0.5
 
      
 
      
     T(1,1:I+1) = T0;
+
     T(1,1:II+1) = T0;
 
      
 
      
 
     for n = 1:N
 
     for n = 1:N
Linha 976: Linha 1 107:
 
          
 
          
 
         % Outros casos de i
 
         % Outros casos de i
         for i = 2:I
+
         for ii = 2:II
 
              
 
              
             T(n+1,i) = fon*T(n,i+1) + (1 - 2*fon)*T(n,i) + fon*T(n,i-1);
+
             T(n+1,ii) = fon*T(n,ii+1) + (1 - 2*fon)*T(n,ii) + fon*T(n,ii-1);
 
              
 
              
 
         end
 
         end
 
          
 
          
         % i = I+1
+
         % i = II+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);
+
         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
Linha 995: Linha 1 126:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
{{collapse bottom}}
 
{{collapse bottom}}
 +
 +
 +
== Projetos finais ==
 +
 +
* [https://github.com/clebercbr/RobotSimulatorMATLAB Projeto 1]
 +
* [[Media:FIC-MATLAB-2017-1-Projeto-2.zip|Projeto 2]]
 +
* [[Media:FIC-MATLAB-2017-1-Projeto-3.zip|Projeto 3]]
 +
* [[Media:FIC-MATLAB-2017-1-Projeto-4.zip|Projeto 4]]
 +
* [[Media:FIC-MATLAB-2017-1-Projeto-5.m|Projeto 5]]
 +
* [[Media:FIC-MATLAB-2017-1-Projeto-6.zip|Projeto 6]]

Edição atual tal como às 10h12min de 13 de junho de 2017

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