Matlab 7.0
Matlab 7.0
Guide
Guide
UFPa
UFPa
Grupo: GDIME
Grupo: GDIME
Aluno: Jouberson Leônidas
Aluno: Jouberson Leônidas
Prof: Abdon Tapía
Introdução
Introdução
O Matlab possui uma ferramenta que permite construir
O Matlab possui uma ferramenta que permite construir interfacesinterfaces
gráficas de interação com o utilizador. O utilitário GUI são interfaces amigáveis gráficas de interação com o utilizador. O utilitário GUI são interfaces amigáveis para o utilizador e durante o projeto prático. Para construir uma interface
para o utilizador e durante o projeto prático. Para construir uma interface gráfica convém ter uma idéia muito bem definida
gráfica convém ter uma idéia muito bem definida do que se pretende.do que se pretende. Eis alguns exemplos:
Criando uma Gui
Criando uma Gui
Neste primeiro momento, cabe apresentar o espaço do
Neste primeiro momento, cabe apresentar o espaço do MatlabMatlabdestinadodestinado
à construção de uma interface gráfica, ou
à construção de uma interface gráfica, ou seja, uma Gui. É seja, uma Gui. É acessado do menuacessado do menu
new gui. new gui.
Dê um clic em OK para abrir um utilizador em branco para a criação da Dê um clic em OK para abrir um utilizador em branco para a criação da gui, ou digite “guide”
gui, ou digite “guide” na janela de comando do matlab.na janela de comando do matlab. Com o utilizador você poderá fazer um
Com o utilizador você poderá fazer um desenho de seu programadesenho de seu programa utilizando as ferramentas a direita da janela do utilizador.
utilizando as ferramentas a direita da janela do utilizador.
A barra para construção dá
A barra para construção dá ao usuário o material necessário paraao usuário o material necessário para construir a cara da interface gráfica.
Ferramentas do programa
Ferramentas do programa
Logo abaixo estão algumas ferramentas que serão utilizadas nas Logo abaixo estão algumas ferramentas que serão utilizadas nas in
inteterfrfacaces gres gráfáficicasas ;;
Edit text Edit text
O
Oedit text edit text é utilizado para a entrada de dadosé utilizado para a entrada de dados
na gui, onde o mesmo pode ser
na gui, onde o mesmo pode ser armazenado em umaarmazenado em uma variável.
variável.
Pop-up-menu
Pop-up-menu List List boxbox
O
OPop-up-menu Pop-up-menu e ae aList box List box servem para listar dados amostrais, emboraservem para listar dados amostrais, embora
sejam diferentes as séries de comandos para utilizá-los é
sejam diferentes as séries de comandos para utilizá-los é bem semelhante.bem semelhante. Sendo a lista a coluna
Sendo a lista a coluna de uma matriz criada pelo usuário.de uma matriz criada pelo usuário.
Push button Push button
O
OPush buttonPush button é uma botão onde sua ação seráé uma botão onde sua ação será
determinada de acordo com a necessidade do usuário, determinada de acordo com a necessidade do usuário, onde ao clicá-lo produz a
onde ao clicá-lo produz a ação do programa.ação do programa.
Toggle button Toggle button
O
O Toggle buttonToggle button é umé um
botão que pode realizar duas botão que pode realizar duas funções, uma quando está funções, uma quando está ativado e outra quando está ativado e outra quando está
desativado. Ele possui o seu valor desativado. Ele possui o seu valor igual a 1 quando ligado e 0
igual a 1 quando ligado e 0 quando desligado. quando desligado. Ex: Ex: if if x==1x==1 grid on grid on else x==0 else x==0 grid off grid off Radio buttons
Radio buttons endend
O
O radio buttonradio button é utilizado como umé utilizado como um
marcador, onde seu valor também varia de zero marcador, onde seu valor também varia de zero aa um. Quando selecionado seu valor é igual a 1, e um. Quando selecionado seu valor é igual a 1, e quando não está selecionado seu valor é
quando não está selecionado seu valor é 0,0, funciona de maneira semelhante ao
funciona de maneira semelhante ao Toggle button.Toggle button. Slider
Slider
O
OSlider Slider funciona como um controlador, onde seus valores podem variar funciona como um controlador, onde seus valores podem variar
de acordo com a necessidade do programador. O programador pode escolher de acordo com a necessidade do programador. O programador pode escolher o intervalo que ele pode
o intervalo que ele pode variar, veremos isso mais adiante emvariar, veremos isso mais adiante emProperty Property inspector,
inspector,onde é ai que onde é ai que pode ser mudada todas as suas propriedades.pode ser mudada todas as suas propriedades.
Text Text
O
OText Text serve para apresentar dados e textosserve para apresentar dados e textos
produzidos pelo usuário, também é possível inserir produzidos pelo usuário, também é possível inserir em uma variável o que está
em uma variável o que está escrito nele.escrito nele.
Propriedades(
Propriedades(
Property Inspector Property Inspector))
Todos os elementos Gui possuem tais propiedades como tamanho, cor, Todos os elementos Gui possuem tais propiedades como tamanho, cor, posição, Tag(nome), style(tipo de elemento), fonte, tamanho da fonte,
posição, Tag(nome), style(tipo de elemento), fonte, tamanho da fonte, string(nome de exibição), Callback(função do botão), entre outros.
string(nome de exibição), Callback(função do botão), entre outros. Os quaisOs quais estes são os principais.
estes são os principais.
Callback
Callback O callback é o que O callback é o que chamamos de função de um botão, ochamamos de função de um botão, o
qual executa uma ação ao ser selecionado. Podemos direcionar a ação de qual executa uma ação ao ser selecionado. Podemos direcionar a ação de umum botão alterando o seu callback de sua
botão alterando o seu callback de sua propriedade.propriedade.
Enable
Enable É como um (liga/ desliga), para É como um (liga/ desliga), para as ferramentas.as ferramentas.
Style
Style É o estilo da ferramenta, fala se é umÉ o estilo da ferramenta, fala se é um push button, edit text, push button, edit text, pop-up-menu, slider, etc...
pop-up-menu, slider, etc... String
String É o texto É o texto apresentado na interface da ferramenta.apresentado na interface da ferramenta.
Tag
Tag É exatamente o nome da ferramenta, e como iÉ exatamente o nome da ferramenta, e como iremos nos referir aremos nos referir a
ela ao programá-la. ela ao programá-la.
Max
Max O valor máximo que a ferramenta pode ter, muito útil paraO valor máximo que a ferramenta pode ter, muito útil para
programar
programar slider.slider. Min
Min O valor mínimo que a O valor mínimo que a ferramenta pode ter,também muito útil paraferramenta pode ter,também muito útil para
programar
Position
Position É a posição onde a fÉ a posição onde a ferramenta está [Xmin, Ymin,erramenta está [Xmin, Ymin,
Xmax,Ymax]. Xmax,Ymax].
Construção de uma Gui
Construção de uma Gui
Após montar o programa utilizando os recursos computacionais citados Após montar o programa utilizando os recursos computacionais citados acima, podemos ativar a interface, basta apertar Ctrl+T, ou aperte um botão acima, podemos ativar a interface, basta apertar Ctrl+T, ou aperte um botão verde em formato de
verde em formato de play play na parte superior da janela. Quando a janela de umna parte superior da janela. Quando a janela de um
interface gráfico é ativada, o
interface gráfico é ativada, o Matlab cria automaticamente uma função (Matlab cria automaticamente uma função (M-fileM-file))
com o código necessário para gerar a
com o código necessário para gerar a Estrutura de dados de todos osEstrutura de dados de todos os
componentes e respectivas propriedades que constituem a interface, através componentes e respectivas propriedades que constituem a interface, através de uma sequência de instruções que aparecem no início da
de uma sequência de instruções que aparecem no início da função e nãofunção e não devem ser alteradas.
devem ser alteradas.
Comando get e set
Comando get e set O comando “get” serve para a entrada deO comando “get” serve para a entrada de
dados, seja ele um número ou um
dados, seja ele um número ou um nome.nome. O comando “set” tem a f
O comando “set” tem a finalidade de apenas exibir dados obtidosinalidade de apenas exibir dados obtidos ou gerados no programa em qualquer elemento gui programado.
ou gerados no programa em qualquer elemento gui programado. Ex 1:
Ex 1:
Variável=get(handles.
Variável=get(handles.edit1edit1, ‘string’);, ‘string’);
set(handles.
set(handles.text1text1, ‘string’,Variavel), ‘string’,Variavel)
Ex 2: Ex 2:
Toda interface criada gera um
Toda interface criada gera um M-fileM-filecorrespondente ascorrespondente as
ferramentas utilizadas. Então fazendo o desenho do programa abaixo utilizando ferramentas utilizadas. Então fazendo o desenho do programa abaixo utilizando um
umtext text , um, um edit text edit text e ume um push button push button, digite os , digite os comandos abaixo nocomandos abaixo noM-fileM-file
gerado pela interface na parte
gerado pela interface na parte que corresponde a ação no botão (callback).que corresponde a ação no botão (callback). Confira se no
Confira se no Tag Tag correspondentes aos comandos é o mesmo da interface,correspondentes aos comandos é o mesmo da interface,
pelo contrário ao rodar o programa dará erro. pelo contrário ao rodar o programa dará erro.
Alguns exemplos
Alguns exemplos
Exemplo 1:
Exemplo 1:
O comando
O comando str2numstr2num serve para converter o valor serve para converter o valor string string em um valor em um valor
numérico, e
Lembrando:
Lembrando:OO Tag Tag dodo M-fileM-file deve ser correspondente a ferramenta usada nadeve ser correspondente a ferramenta usada na
interface. Os comandos devem ser digitados no
interface. Os comandos devem ser digitados no M-fileM-file da interface abaixo da parteda interface abaixo da parte
correspondente ao
correspondente ao callback callback do botão.do botão.
Exemplo 2
Exemplo 2
Repare que cara
Repare que cara radio buttonradio button tem seutem seu callback callback , então a lógica é a, então a lógica é a
seguinte: Quando o usuário seleciona um
seguinte: Quando o usuário seleciona um radio buttonradio button o mesmo é marcado eo mesmo é marcado e
automaticamen
automaticamente os te os dois restantes não dois restantes não são marcados.são marcados. Logo:
Logo:
function radiobutton1_callback(hObject, eventdata, handles) function radiobutton1_callback(hObject, eventdata, handles) set(handles.radionbutton1,’value’,1); set(handles.radionbutton1,’value’,1); set(handles.radionbutton2,’value’,0); set(handles.radionbutton2,’value’,0); set(handles.radionbutton3,’value’,0); set(handles.radionbutton3,’value’,0); Obs:
Obs: o valor doo valor doRadio buttonRadio button pode ser colocado em uma variável epode ser colocado em uma variável e
utilizado como condição para ações futuras de determinado programa. utilizado como condição para ações futuras de determinado programa.
Exemplo 3:
Exemplo 3:
Este exem
Este exemplo mosplo mostra tra a utilidade a utilidade dodo Slider Slider , onde o seu intervalo pode, onde o seu intervalo pode
ser alterado de acordo com a
ser alterado de acordo com a necessidade do programador nonecessidade do programador noPropert Propert Inspector
Inspector emem max max ee minmin..
A lógica do programa é a seguinte: De acordo que o
A lógica do programa é a seguinte: De acordo que oSlider Slider corre o valor corre o valor
contido em seu intervalo aumenta, onde no fim
contido em seu intervalo aumenta, onde no fim dodo Slider Slider é seu valor máximo.é seu valor máximo.
Logo o valor selecionado é colocado em uma variável e
Logo o valor selecionado é colocado em uma variável e depois apresentada emdepois apresentada em um
umtext.text.
O
Oaxesaxes faz parte das ferramentas utilizadas para a faz parte das ferramentas utilizadas para a construção de umaconstrução de uma
gui, o programador pode inserir vários
gui, o programador pode inserir vários gráficos ao mesmo tempo, mas para segráficos ao mesmo tempo, mas para se referir a cada
referir a cada axesaxes basta digitar basta digitar handle(handles.axes(numhandle(handles.axes(numero do ero do axes))axes)), no, no M-file
M-filegerado pela interface.gerado pela interface.
Como usar uma
Uma das dificuldades mais freqüentes dos iniciantes em interface gráfica Uma das dificuldades mais freqüentes dos iniciantes em interface gráfica é entender a lógica dos
é entender a lógica dos programas, na verdade quando o usuário aprendeprogramas, na verdade quando o usuário aprende como o programa se comporta, se torna mais fácil
como o programa se comporta, se torna mais fácil reproduzi-lo.reproduzi-lo. O que se precisa saber para usar uma listbox é; O que se precisa saber para usar uma listbox é;
11 A listbox apresenta dados armazenado em matrizes, ou sejaA listbox apresenta dados armazenado em matrizes, ou seja
apresentando uma coluna de matriz. apresentando uma coluna de matriz.
22 Armazenar dados em uma matriz.Armazenar dados em uma matriz.
33 Gerar um banco de dados.Gerar um banco de dados.
Criando uma lista
Criando uma lista
1°passo
1°passo
Inicialmente abra o matlab, abra a parte que corresponde a interface Inicialmente abra o matlab, abra a parte que corresponde a interface gráfica. Faça o
gráfica. Faça o diagrama abaixo diagrama abaixo no utilizador. no utilizador. Apague asApague asstringsstrings dodo edit edit e dae da listbox,
listbox, faça isso indo em suas respectivas propriedades (faça isso indo em suas respectivas propriedades ( property inspector) property inspector)..
2°passo
2°passo
Agora é necessário criar Agora é necessário criar um contador para que um contador para que possamos listas os dados possamos listas os dados e armazena-los em uma e armazena-los em uma matriz.
matriz.
Abra um novo arquivo-M Abra um novo arquivo-M ((M-fileM-file) e digite os) e digite os
seguintes comandos: seguintes comandos: function iniciar() function iniciar() n=1; n=1;
save banco_de dados save banco_de dados
Após digitar o comando Após digitar o comando salve o
salve o M-fileM-filecom o nomecom o nome
que fica após o comando
que fica após o comando function.function.
3° passo
3° passo
Abra um novo
Abra um novo M-fileM-file e digite os e digite os seguintes comandos:seguintes comandos: function gera_contagem() function gera_contagem() load banco_de_dados load banco_de_dados n=n+1; n=n+1; x=findobj('tag','edit1'); x=findobj('tag','edit1'); xa=get(x,'string'); xa=get(x,'string'); tabela(n,1)={n}; tabela(n,1)={n}; tabela(n,2)={xa}; tabela(n,2)={xa}; lista=findobj('tag','listbox1'); lista=findobj('tag','listbox1'); set(lista,'string',tabela(:,2)); set(lista,'string',tabela(:,2)); save banco_de_dados save banco_de_dados
Depois salve o arquivo com o nome que
4° Passo
4° Passo
Vá para o utilizador, abra a propriedade do botão como mostra a figura: Vá para o utilizador, abra a propriedade do botão como mostra a figura:
Na propriedade em
Na propriedade em callback callback digite o nome odigite o nome o M-fileM-file que se desejaque se deseja
executar ao selecionar o botão, no
executar ao selecionar o botão, no casocasogera_contagemgera_contagem. E no. E noCreateCreate Fcn
Fcn você digita o nome dovocê digita o nome do M-fileM-file que se deseja ser executado logoque se deseja ser executado logo
quando o programa abrir, no caso
quando o programa abrir, no caso iniciar iniciar ..
FIM FIM
O comando
O comando findobj findobj funciona como ofunciona como oinput input , mas com, mas comfindobj findobj oo
programador precisa direcionar para onde vai o comando. programador precisa direcionar para onde vai o comando.
Ex: Ex: x=findobj('tag','edit1'); x=findobj('tag','edit1'); xa=get(x,'string'); xa=get(x,'string');
Neste caso o commando foi direcionado para seu o
Neste caso o commando foi direcionado para seu o edit1,edit1, onde depoisonde depois
foi armazenado em uma variável. A variável
foi armazenado em uma variável. A variável xaxa só fez armazenar em umasó fez armazenar em uma
variável o que já estava em
variável o que já estava emxx no formatono formato string string ..
Construindo painéis para interface
Construindo painéis para interface
Nas interfaces gráficas no matlab é
Nas interfaces gráficas no matlab é possível gerar painéis que ficam napossível gerar painéis que ficam na parte superior da janela do
parte superior da janela do programa. O programador pode colocar nessesprograma. O programador pode colocar nesses painéis botões como “Arquivo”, ”Editar”, ”Inserir”, ”Formatar”, “Ajuda”.
painéis botões como “Arquivo”, ”Editar”, ”Inserir”, ”Formatar”, “Ajuda”. Na parte superior da j
Na parte superior da janela do utilizador tem um botão anela do utilizador tem um botão chamadochamadoMenu Menu Editor
Editor ..
Ao entrar no
Ao entrar no Menu Editor Menu Editor o usuário poderá criar um painel para sua gui,o usuário poderá criar um painel para sua gui,
é lógico que depois terá
é lógico que depois terá que programar suas funções, seusque programar suas funções, seus CallbacksCallbacks sãosão
automaticamen
automaticamente direcionados para te direcionados para oo M-fileM-filegerado pela interface, mas podemgerado pela interface, mas podem
ser redirecionados pelo
ser redirecionados pelo Menu Editor,Menu Editor, onde mostra oonde mostra o Callback Callback de cada item node cada item no
painel. painel.
Abrir e
Abrir e
salvar arquivos
salvar arquivos
O usuário O usuário pode abrir e gerar pode abrir e gerar executáveis em executáveis em sua interface, sua interface, após usar os após usar os comandos abaixo, comandos abaixo, depois terá de depois terá de programa-los. programa-los.Abrir
Abrir
[filename,pathna[filename,pathname] = me] = uigetfile('*.m','UIGETuigetfile('*.m','UIGETFILE TITLE');FILE TITLE');
Salvar
Salvar
[filename,pathna
[filename,pathname] me] = = uiputfile('Default.m','UIPuiputfile('Default.m','UIPUTFILE TITLE');UTFILE TITLE');
Ferramenta
Ferramentas
s úteis
úteis
button = questdlg('Deseja fechar o
button = questdlg('Deseja fechar o programaprograma?', ...?', ... 'Saida','Yes','No','No'); 'Saida','Yes','No','No'); switch button switch button case 'Yes', case 'Yes', close close case 'No', case 'No', return return end end msgbox('Erro
msgbox('Erro da da mensagem','Errmensagem','Erro','help'o','help'); ); msgbox('Erro msgbox('Erro da da mensagem','Ermensagem','Erro','helpro','help');');
msgbox('Erro da mensagem','Erro','warn');
msgbox('Erro da mensagem','Erro','warn'); answers = answers = inputdlg({'1°peinputdlg({'1°pergunta',...rgunta',... '2°pergunta',... '2°pergunta',... '3°pergunta',},... '3°pergunta',},... 'nome da janela'); 'nome da janela');
uisetfont(object_handles) uisetfcolor(object_handles) uisetfont(object_handles) uisetfcolor(object_handles)