MATLABAvançado - Versão 2010a
(parte 2)
Gabriel de Figueiredo da Costa
Curso de MATLAB Avançado e Simulink 1
Exemplo 5.1
• Tanques acoplados
Equações:
F1=K12*(h1-h2)^0,5 (m³/min)
F2=K2*h2^0,5 (m³/min)
Dimensões e constantes:
A1=A2=10 m²
K12=1,5 m5/2/min
K2=1m5/2/min
Condição de operação: h1=10, h2=7.
Curso de MATLAB Avançado e Simulink 2
A1, h1
F01
F1
A2, h2
F02
F2
Exemplo 5.1
• Na condição de operação:
F1 = K12*(h1-h2)^0,5 = 1,5*(10-7)^0,5 = 1,5*3^0,5
F1 = 2,5981
• O nível dos tanques não se altera, logo:
F01 = F1 = 2,5981
F2 = K2*h2^0,5 = 1*7^0,5
F2 = 2,6458
F02 = F2 - F1 = 0,0477
Curso de MATLAB Avançado e Simulink 3
Exemplo 5.1
Curso de MATLAB Avançado e Simulink 4
• As equações diferenciais serão:
Caso h2 seja maior que h1, a corrente entre os
tanques será no sentido contrário. Porém,
próximo ao estado de operação, isto não ocorre.
Exemplo 5.1
• Para definir a Função de Transferência, é vantajoso
ter apenas termos lineares. Por isso, as raízes
devem ser linearizadas.
syms h1 h2
F1=(h1-h2)^0.5;
F1_a=subs(F1,h2,7);
f1_a=taylor(F1_a,2,10); % linearizando F1 c/ h1
F1_b=subs(F1,h1,10);
f1_b=taylor(F1_b,2,7); % linearizando F1 c/ h2
syms h1 h2
F2=h2^0.5;
f2=taylor(F2,2,7); % linearizando F2 c/ h2
Curso de MATLAB Avançado e Simulink 5
Exemplo 5.1
Curso de MATLAB Avançado e Simulink 6
• Temos para F1, somando as duas partes (f1_a,
f1_b) e utilizando o termo independente apenas
uma vez,
• E para F2,
Exemplo 5.1
• Substituindo e passando para variáveis-excesso (X
= X – X(t=0)), as equações aproximadas são:
Curso de MATLAB Avançado e Simulink 7
Exemplo 5.1
• Substituindo todos os valores, menos H1, H2, F01 e
F02, temos:
Curso de MATLAB Avançado e Simulink 8
Exemplo 5.1
• Por exemplo, para calcular o aumento no nível do tanque 2
caso o nível do tanque 1 varie de 10 até 12, linearmente, em
20 minutos, mantendo F02 constante, pode-se usar a rotina:
syms s t
H1_t=2/20*t;
H1_s=laplace(H1_t);
F02=double(0.0477);
H2_t=ilaplace(0.1/(s-0.0244)*F02+0.0433/(s-0.0244)*H1_s);
x=0:20;
for i=1:length(x)
y(i)=double(subs(H2_t,t,x(i)));
end
plot(x,y);
Curso de MATLAB Avançado e Simulink 9
Exemplo 5.1
• Resultado:
H2
(m)
t(min)
Curso de MATLAB Avançado e Simulink 10
6. Programas em interface gráfica (GUI)
• GUIDE – guia para desenvolvimento de GUI
• Acessível digitando-se guide na janela de comando
• Objetos disponíveis:
Curso de MATLAB Avançado e Simulink 11
6. Programas em interface gráfica (GUI)
• Push Button – um botão que realiza uma rotina ao
ser clicado
• Slider – uma barra que possui um cursor cuja
posição pode ser modificada
• Radio Button – um marcador de opção que pode
ser ligado ou desligado, sendo que dentro de um
grupo só pode existir um marcador ligado.
• CheckBox – uma caixa de opção que pode ser
marcada ou desmarcada
Curso de MATLAB Avançado e Simulink 12
6. Programas em interface gráfica (GUI)
• EditText – uma caixa de texto editável pelo usuário
• StaticText – um texto fixo
• PopupMenu – uma barra que quando é clicada
abre uma lista para a seleção de um item
• List Box – uma caixa com vários itens selecionáveis
• Toggle Button – um botão que, quando está
inativo e é clicado, ativa-se, e vice-versa
Curso de MATLAB Avançado e Simulink 13
6. Programas em interface gráfica (GUI)
• Table – permite visualizar uma tabela
• Axes – eixos para plotar gráficos ou figuras
• Panel – um quadro para melhor organizar a janela
do programa
• Button Group – agrupa automaticamente vários
Radio Buttons
• ActiveXControl – insere um controle ActiveX
Curso de MATLAB Avançado e Simulink 14
6. Programas em interface gráfica (GUI)
• Ler Propriedades
get(handles.TAG_DO_OBJETO,
‘PROPRIEDADE’)
• Definir propriedades
set(handles.TAG_DO_OBJETO,
‘PROPRIEDADE’ , VALOR)
Curso de MATLAB Avançado e Simulink 15
6.1. Propriedades dos Objetos
• Propriedades
Acessadas clicando com o botão direito no objeto
Curso de MATLAB Avançado e Simulink 16
6.1. Propriedades dos Objetos
• Propriedades
FontAngle – ângulo na qual o texto será exibido
FontName – fonte do texto
FontSize – tamanho do texto (geralmente em pontos)
FontWeight – peso do texto (normal, negrito)
ForegroudColor – cor do texto
BackgroundColor – cor do fundo do objeto
Curso de MATLAB Avançado e Simulink 17
6.1. Propriedades dos Objetos
• Propriedades
String – é o texto em si
Value – é o valor associado ao objeto, que também pode ser
um vetor ou matriz de valores
Tag – é o nome do objeto a ser usado na programação
CallBack – função que será chamada ao clicar-se no objeto
Enable – se o objeto está ativo (pode ser usado pelo usuário)
ou não
Visible – se o objeto está visível ou não
Curso de MATLAB Avançado e Simulink 18
6.1. Propriedades dos Objetos
• Push Button
CallBack – rotina que será executada
• Toggle Button e Check Box
Value = 1 (ligado) ou Value = 0 (desligado)
• Radio Button
Value = 1 (ligado) ou Value = 0 (desligado)
Callback –função para manter somente 1 ligado
• Edit e Static Text
String – texto digitado ou exibido
Curso de MATLAB Avançado e Simulink 19
6.1. Propriedades dos Objetos
• Slider
Min e Max – valores mínimo e máximo
SliderStep – passo do slider
Value – valor atual
• List Box e Popup Menu
String – contém a lista de valores
Value – contém o número (índice) do valor selecionado
• Table
UserData – contém a tabela a ser exibida
Curso de MATLAB Avançado e Simulink 20
6.2. Propriedades dos Formulários
• Resize on ou off
• Funções a serem realizadas após a inicialização
Curso de MATLAB Avançado e Simulink 21
Área para inserir comandos
6.3. Janelas de diálogo
• errordlg(‘Texto’,’Titulo’)
exibe uma janela de erro com um botão “OK”
• warndlg(‘Texto’,’Titulo’)
exibe uma janela de aviso com um botão “OK”
• helpdlg(‘Texto’,’Titulo’)
exibe uma janela de ajuda com um botão “OK”
• texto{1}=’nome do campo de input 1’
texto{2}=’nome do campo de input 2’
texto{3}=’nome do campo de input 3’
a=inputdlg(texto,’titulo’)
exibe uma caixa com N campos para
input, e retorna as respostas
Curso de MATLAB Avançado e Simulink 22
6.3. Janelas de diálogo
• a=questdlg(‘Pergunta’,’Resposta1’,’Resposta2’,...,’Padrão’)
exibe uma caixa com uma pergunta e várias opções de resposta,
sendo que a resposta ‘Padrão’ estará marcada inicialmente.
• [arquivo diretório]=uigetfile(‘*.extensao’,’Titulo’)
abre uma janela para procurar arquivos do tipo “*.extensão” no
computador, e retorna o arquivo selecionado e o diretório em que
se encontra.
• [arquivo diretório]=uiputfile(‘*.extensao’,’Titulo’)
abre uma janela para salvar arquivos do tipo “*.extensão” no
computador, e retorna o nome do arquivo selecionado (junto com
seu tipo), e o diretório escolhido.
Curso de MATLAB Avançado e Simulink 23
Exemplo 6.1
• Gerador de gráficos de seno ou cosseno
Curso de MATLAB Avançado e Simulink 24
Exemplo 6.1
• Radio Buttons – Callback
function radiobutton1_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',1);
set(handles.radiobutton2,'Value',0);
function radiobutton2_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',0);
set(handles.radiobutton2,'Value',1);
• Slider – Callback
function slider1_Callback(hObject, eventdata, handles)
a=get(handles.slider1,'Value');
a=num2str(a);
set(handles.text5,'String',a);
Curso de MATLAB Avançado e Simulink 25
Exemplo 6.1
• “GERAR GRÁFICO” – Callback
global x y
x1=get(handles.edit1,'String');
x1=str2num(x1);
x2=get(handles.edit2,'String');
x2=str2num(x2);
p=get(handles.slider1,'Value');
x=x1:p:x2;
Curso de MATLAB Avançado e Simulink 26
Exemplo 6.1
• “GERAR GRÁFICO” – Callback (cont.)
if get(handles.radiobutton1,'Value')==1
y=sin(x);
else
y=cos(x);
end
axes(handles.axes1);
plot(x,y,'r-',[x1,x2],[0,0],'k--',
[0,0],[min(y),max(y)],'k--');
axis tight;
set(handles.pushbutton2,'Enable','on');
Curso de MATLAB Avançado e Simulink 27
Exemplo 6.1
• “Exportar (.txt)” – Callback
function pushbutton2_Callback(hObject, eventdata, handles)
global x y
[nome,local,filter]=uiputfile('*.txt','Exportar para .txt');
if filter==1
fid=fopen([local,nome],'w'); %cria o arquivo no local
fprintf(fid,'%3.6f;%3.6frn',[x' y']); %escreve os dados no arquivo
fclose(fid); %fecha o arquivo
end
Curso de MATLAB Avançado e Simulink 28
Exemplo 6.1
Curso de MATLAB Avançado e Simulink 29

Curso de Matlab avancado 2

  • 1.
    MATLABAvançado - Versão2010a (parte 2) Gabriel de Figueiredo da Costa Curso de MATLAB Avançado e Simulink 1
  • 2.
    Exemplo 5.1 • Tanquesacoplados Equações: F1=K12*(h1-h2)^0,5 (m³/min) F2=K2*h2^0,5 (m³/min) Dimensões e constantes: A1=A2=10 m² K12=1,5 m5/2/min K2=1m5/2/min Condição de operação: h1=10, h2=7. Curso de MATLAB Avançado e Simulink 2 A1, h1 F01 F1 A2, h2 F02 F2
  • 3.
    Exemplo 5.1 • Nacondição de operação: F1 = K12*(h1-h2)^0,5 = 1,5*(10-7)^0,5 = 1,5*3^0,5 F1 = 2,5981 • O nível dos tanques não se altera, logo: F01 = F1 = 2,5981 F2 = K2*h2^0,5 = 1*7^0,5 F2 = 2,6458 F02 = F2 - F1 = 0,0477 Curso de MATLAB Avançado e Simulink 3
  • 4.
    Exemplo 5.1 Curso deMATLAB Avançado e Simulink 4 • As equações diferenciais serão: Caso h2 seja maior que h1, a corrente entre os tanques será no sentido contrário. Porém, próximo ao estado de operação, isto não ocorre.
  • 5.
    Exemplo 5.1 • Paradefinir a Função de Transferência, é vantajoso ter apenas termos lineares. Por isso, as raízes devem ser linearizadas. syms h1 h2 F1=(h1-h2)^0.5; F1_a=subs(F1,h2,7); f1_a=taylor(F1_a,2,10); % linearizando F1 c/ h1 F1_b=subs(F1,h1,10); f1_b=taylor(F1_b,2,7); % linearizando F1 c/ h2 syms h1 h2 F2=h2^0.5; f2=taylor(F2,2,7); % linearizando F2 c/ h2 Curso de MATLAB Avançado e Simulink 5
  • 6.
    Exemplo 5.1 Curso deMATLAB Avançado e Simulink 6 • Temos para F1, somando as duas partes (f1_a, f1_b) e utilizando o termo independente apenas uma vez, • E para F2,
  • 7.
    Exemplo 5.1 • Substituindoe passando para variáveis-excesso (X = X – X(t=0)), as equações aproximadas são: Curso de MATLAB Avançado e Simulink 7
  • 8.
    Exemplo 5.1 • Substituindotodos os valores, menos H1, H2, F01 e F02, temos: Curso de MATLAB Avançado e Simulink 8
  • 9.
    Exemplo 5.1 • Porexemplo, para calcular o aumento no nível do tanque 2 caso o nível do tanque 1 varie de 10 até 12, linearmente, em 20 minutos, mantendo F02 constante, pode-se usar a rotina: syms s t H1_t=2/20*t; H1_s=laplace(H1_t); F02=double(0.0477); H2_t=ilaplace(0.1/(s-0.0244)*F02+0.0433/(s-0.0244)*H1_s); x=0:20; for i=1:length(x) y(i)=double(subs(H2_t,t,x(i))); end plot(x,y); Curso de MATLAB Avançado e Simulink 9
  • 10.
    Exemplo 5.1 • Resultado: H2 (m) t(min) Cursode MATLAB Avançado e Simulink 10
  • 11.
    6. Programas eminterface gráfica (GUI) • GUIDE – guia para desenvolvimento de GUI • Acessível digitando-se guide na janela de comando • Objetos disponíveis: Curso de MATLAB Avançado e Simulink 11
  • 12.
    6. Programas eminterface gráfica (GUI) • Push Button – um botão que realiza uma rotina ao ser clicado • Slider – uma barra que possui um cursor cuja posição pode ser modificada • Radio Button – um marcador de opção que pode ser ligado ou desligado, sendo que dentro de um grupo só pode existir um marcador ligado. • CheckBox – uma caixa de opção que pode ser marcada ou desmarcada Curso de MATLAB Avançado e Simulink 12
  • 13.
    6. Programas eminterface gráfica (GUI) • EditText – uma caixa de texto editável pelo usuário • StaticText – um texto fixo • PopupMenu – uma barra que quando é clicada abre uma lista para a seleção de um item • List Box – uma caixa com vários itens selecionáveis • Toggle Button – um botão que, quando está inativo e é clicado, ativa-se, e vice-versa Curso de MATLAB Avançado e Simulink 13
  • 14.
    6. Programas eminterface gráfica (GUI) • Table – permite visualizar uma tabela • Axes – eixos para plotar gráficos ou figuras • Panel – um quadro para melhor organizar a janela do programa • Button Group – agrupa automaticamente vários Radio Buttons • ActiveXControl – insere um controle ActiveX Curso de MATLAB Avançado e Simulink 14
  • 15.
    6. Programas eminterface gráfica (GUI) • Ler Propriedades get(handles.TAG_DO_OBJETO, ‘PROPRIEDADE’) • Definir propriedades set(handles.TAG_DO_OBJETO, ‘PROPRIEDADE’ , VALOR) Curso de MATLAB Avançado e Simulink 15
  • 16.
    6.1. Propriedades dosObjetos • Propriedades Acessadas clicando com o botão direito no objeto Curso de MATLAB Avançado e Simulink 16
  • 17.
    6.1. Propriedades dosObjetos • Propriedades FontAngle – ângulo na qual o texto será exibido FontName – fonte do texto FontSize – tamanho do texto (geralmente em pontos) FontWeight – peso do texto (normal, negrito) ForegroudColor – cor do texto BackgroundColor – cor do fundo do objeto Curso de MATLAB Avançado e Simulink 17
  • 18.
    6.1. Propriedades dosObjetos • Propriedades String – é o texto em si Value – é o valor associado ao objeto, que também pode ser um vetor ou matriz de valores Tag – é o nome do objeto a ser usado na programação CallBack – função que será chamada ao clicar-se no objeto Enable – se o objeto está ativo (pode ser usado pelo usuário) ou não Visible – se o objeto está visível ou não Curso de MATLAB Avançado e Simulink 18
  • 19.
    6.1. Propriedades dosObjetos • Push Button CallBack – rotina que será executada • Toggle Button e Check Box Value = 1 (ligado) ou Value = 0 (desligado) • Radio Button Value = 1 (ligado) ou Value = 0 (desligado) Callback –função para manter somente 1 ligado • Edit e Static Text String – texto digitado ou exibido Curso de MATLAB Avançado e Simulink 19
  • 20.
    6.1. Propriedades dosObjetos • Slider Min e Max – valores mínimo e máximo SliderStep – passo do slider Value – valor atual • List Box e Popup Menu String – contém a lista de valores Value – contém o número (índice) do valor selecionado • Table UserData – contém a tabela a ser exibida Curso de MATLAB Avançado e Simulink 20
  • 21.
    6.2. Propriedades dosFormulários • Resize on ou off • Funções a serem realizadas após a inicialização Curso de MATLAB Avançado e Simulink 21 Área para inserir comandos
  • 22.
    6.3. Janelas dediálogo • errordlg(‘Texto’,’Titulo’) exibe uma janela de erro com um botão “OK” • warndlg(‘Texto’,’Titulo’) exibe uma janela de aviso com um botão “OK” • helpdlg(‘Texto’,’Titulo’) exibe uma janela de ajuda com um botão “OK” • texto{1}=’nome do campo de input 1’ texto{2}=’nome do campo de input 2’ texto{3}=’nome do campo de input 3’ a=inputdlg(texto,’titulo’) exibe uma caixa com N campos para input, e retorna as respostas Curso de MATLAB Avançado e Simulink 22
  • 23.
    6.3. Janelas dediálogo • a=questdlg(‘Pergunta’,’Resposta1’,’Resposta2’,...,’Padrão’) exibe uma caixa com uma pergunta e várias opções de resposta, sendo que a resposta ‘Padrão’ estará marcada inicialmente. • [arquivo diretório]=uigetfile(‘*.extensao’,’Titulo’) abre uma janela para procurar arquivos do tipo “*.extensão” no computador, e retorna o arquivo selecionado e o diretório em que se encontra. • [arquivo diretório]=uiputfile(‘*.extensao’,’Titulo’) abre uma janela para salvar arquivos do tipo “*.extensão” no computador, e retorna o nome do arquivo selecionado (junto com seu tipo), e o diretório escolhido. Curso de MATLAB Avançado e Simulink 23
  • 24.
    Exemplo 6.1 • Geradorde gráficos de seno ou cosseno Curso de MATLAB Avançado e Simulink 24
  • 25.
    Exemplo 6.1 • RadioButtons – Callback function radiobutton1_Callback(hObject, eventdata, handles) set(handles.radiobutton1,'Value',1); set(handles.radiobutton2,'Value',0); function radiobutton2_Callback(hObject, eventdata, handles) set(handles.radiobutton1,'Value',0); set(handles.radiobutton2,'Value',1); • Slider – Callback function slider1_Callback(hObject, eventdata, handles) a=get(handles.slider1,'Value'); a=num2str(a); set(handles.text5,'String',a); Curso de MATLAB Avançado e Simulink 25
  • 26.
    Exemplo 6.1 • “GERARGRÁFICO” – Callback global x y x1=get(handles.edit1,'String'); x1=str2num(x1); x2=get(handles.edit2,'String'); x2=str2num(x2); p=get(handles.slider1,'Value'); x=x1:p:x2; Curso de MATLAB Avançado e Simulink 26
  • 27.
    Exemplo 6.1 • “GERARGRÁFICO” – Callback (cont.) if get(handles.radiobutton1,'Value')==1 y=sin(x); else y=cos(x); end axes(handles.axes1); plot(x,y,'r-',[x1,x2],[0,0],'k--', [0,0],[min(y),max(y)],'k--'); axis tight; set(handles.pushbutton2,'Enable','on'); Curso de MATLAB Avançado e Simulink 27
  • 28.
    Exemplo 6.1 • “Exportar(.txt)” – Callback function pushbutton2_Callback(hObject, eventdata, handles) global x y [nome,local,filter]=uiputfile('*.txt','Exportar para .txt'); if filter==1 fid=fopen([local,nome],'w'); %cria o arquivo no local fprintf(fid,'%3.6f;%3.6frn',[x' y']); %escreve os dados no arquivo fclose(fid); %fecha o arquivo end Curso de MATLAB Avançado e Simulink 28
  • 29.
    Exemplo 6.1 Curso deMATLAB Avançado e Simulink 29