Академический Документы
Профессиональный Документы
Культура Документы
Contedo
Criando a interface
Codificando o exemplo
Criando a interface
Para criar uma interface no MATLAB, basta chamar a funo guide no prompt do
MATLAB. Esta funo trar a seguinte janela:
Neste exemplo, podemos ficar com a opo padro (Blank GUI) e voc tambm pode
salvar a figura (interface) com a opo Save new figure as. Quando voc salvar, o
MATLAB criar automaticamente um arquivo *.m correspondente sua interface e j
Para ver funcionando voc pode clicar no tringulo verde do GUIDE ou apertar F5 no
editor de cdigos. Para chamar a interface futuramente, basta usar o nome que voc deu
a ela como se fosse uma funo (e isso que ela ), voc pode cham-la dentro de
outros programas ou direto do promtp (ela deve estar acessvel no path).
Codificando o exemplo
Para associar aes aos componententes, o MATLAB utiliza os chamados callbacks,
que so apenas funes chamadas quando alguma coisa acontece. Veremos como
funciona na prtica: clicando com o boto direito sobre um componente, aparece um
menu, neste menu h a opo View Callbacks que mostra todos os callbacks disponveis
para um componente e voc precisa clicar em qual voc quer editar e o MATLAB
mostra onde digitar e, para alguns componentes, j trs algumas dicas. Veja o cdigo
que eu coloquei no callback do boto Abrir imagem (os comentrios em ingls foram
colocados automaticamente pelo MATLAB):
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
%
%
%
%
c
Veja que continuamos usando os handles, agora para obter propriedades dos
componentes usando a funo get (para mudar propriedades via cdigo, usa-se set).
Finalmente, o callback do boto Marcar pontos. Nesse eu vou usar a mesma tcnica
que autores famosos de livros tcnicos usam quando tm preguia: no vou comentar
para estimular o raciocnio do leitor.
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject
handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
if isnan(handles.px2min)
errordlg('Marque a referncia primeiro', 'Erro');
return;
end
numEst = str2double(get(handles.edtNumEst, 'String'));
if ~isnan(numEst) && numEst > 1
axes(handles.axes1);
pto = ginput(1);
hold on;
plot(pto(1), pto(2), 'xr');
else
errordlg('Por favor, digite um nmero vlido de estaes.',
'Erro');
return;
end
for j=2:numEst
last = pto;
pto = ginput(1);
plot(pto(1), pto(2), 'xr');
line([last(1) pto(1)], [last(2) pto(2)]);
d = ( norm(last-pto) / handles.px2min ) * 1852;
text(pto(1)+(last(1)-pto(1))/2, pto(2)+(last(2)-pto(2))/2, ...
sprintf('%.2fm', d), 'backgroundcolor', 'y');
end
hold off;
A opo -m diz que queremos um programa standalone, ou seja, que funcione sozinho,
independente do MATLAB. Na verdade, ele no ser totalmente independente, ele
requerir a instalao do MCR (MATLAB Compiler Runtime), mas voc poder
distribuir seu programa e o MCR livremente e dentro da lei, pois o pessoal da
MathWorks deixa voc distribuir o MCR para qualquer um (apenas o MCR). Consulte
a documentao para saber mais.
Em Windows, ser criado o arquivo interface.exe na mesma pasta na qual est o arquivo
M, em Linux ser criado o arquivo binrio interface, tambm na mesma pasta do
arquivo M.