Escolar Documentos
Profissional Documentos
Cultura Documentos
Curso MATLAB 6 Especiais
Curso MATLAB 6 Especiais
Tpicos Especiais:
Importao e Exportao de Dados. Interfaces de Programao Arquivos de udio e vdeo. Interfaces grficas com o Usurio.
Importao de Dados:
Arquivos de Texto: >>help dlmread [l dados em arquivo de texto] Ex: >>dlmread(dados.txt, ,)
Dados.txt 1, 2 ,3
Excel: >>help xlsread [l dados em planilha de excel] Arquivos .mat ou tipo Ascii: >>load nome_do_arquivo >>save nome_do_arquivo [ salva em arquivo tipo mat]
Importao de Dados:
Podemos querer abrir um arquivo de texto e escrever nele dados de sada da nosso programa: >> help fopen [abri ou cria um arquivo novo] retorna um fid [identificador do arquivo] >>fid=fopen(resultados.txt,w) permisso
Tipos de Permisso: 'r' [leitura] 'w' [escrita (criao se necessrio)] >>help fclose [fecha o arquivo] >>fclose(fid) Escrita: >>help printf [escreve dados formatados]
Importao de Dados:
Devemos escrever o texto e indicar com % a posio do nmero e inserir a formatao. %a.bc: a= nmero de espaos, b=numero de dgitos. c=Formatos: d, i, o, u, x, X, f, e, E, g, G, c, s f-real. e-notao cientifica Aps o formato podemos inserir: \n \t [ nova linha, tab]
Exemplo 1: x=[ 1 2 3] >>fprintf(fid,o valor de x :=%5.4f/n)
O valor de x e: 1.0000 2.0000 3.0000
Exemplo 2:
Importao/Exportao de Dados:
Via Troca Dinmica de Ddados [DDE] e ActiveX. >>help winfun 1) DDE: Canal=ddeinit(excel, nome_do_arquivo.xls) [inicio de comunicao] M = ddereq(canal, 'r1c1:r2c2'); [ importao] N=ddepoke(canal,'r1c1:r5c5', eye(5)); [exportao] rc=ddeterm(canal) [ fim de comunicao]
Active X: Word Wrd=actxserver(Word.Application); Wrd.Visible=1; [torna o Word visvel] Para arquivo novo: Doc=invoke(wrd.Documents,Add); Para arquivo existente: Doc=invoke(wrd.Documents,Open,myfile.doc); Inserir pargrafo: Invoke(Doc.Content,InsertParagraphAfter); Inserir Texto: Invoke(Doc.Content,InsertAfter,Meu texto aqui); Invoke(Doc.Content,InsertParagraphAfter); Capturar fugura 1 atual: print('-dmeta','-f1'); Invoke(Doc.Content,'Collapse',0); Colar no documento: Invoke(Doc.Content,'PasteSpecial',0,0,1,0,3);
Excel Link:
Quando o Matlab instalado, ele cria uma pasta de nome toolbox, dentro dessa pasta tem uma sub pasta de nome exlink.O Arquivo excllink.xla permite troca de dados interativos entre o Matlab e o excel. O arquivo vem com macros que so acionadas por botes na barra de ferramentas:
macros
Excel Link:
Putmatrix [exporta do Matlab] Basta selecionar os dados a serem enviados, clicar em putmatrix e definir o nome da varivel a ser criada no Matlab. Getmatrix[importa para o matlab] Basta selecionar a clula superior esquerda onde ser colado o dado do matlab clicar em getmatrix e definir o nome da varivel putmatrix e definir o nome da varivel do Matlab.
Matlab Notebook:
Permite a execuo de comandos digitados no word, uma ferramenta bem til para relatrios. Para utilizar o Matlab notebook necessrio realizar um setup: Digite: >>notebbok setup O Matlab pede a verso do seu Word e em seguida pede dois arquivos por meio de uma caixa de dialogo, um executvel e outro .dot (normal.dot por exemplo).Esses arquivos se encontram dentro do diretrio em o que o Office se encontra instalado. Esse procedimento s precisa ser realizado uma vez.Da em diante basta digitar >>notebook que uma arquivo de word aberto com macros na barra de ferramentas.
Matlab Notebook:
Escreva seu texto normalmente , selecione o texto com o comando do Matlab que deseja executar,exatamente como faria em ambiente Matlab. Define Input Cell [define como entrada] Evaluate M-book [executa em Matlab os input cell definidos}
Compilao de Funes:
O Matlab permite a compilao de um arquivo m em C, o que pode reduzir o tempo de computao em at 40%. Exemplo: >>mcc x teste_mcc [teste_mcc.m um arquivo tipo m]
A chamada feita normalmente, e no necessrio que o arquivo m permanea no diretrio. >>Mcc m teste_mcc [cria um executvel]
MEX Files:
Funes e sub-rotinas em C ou em Fortran podem ser chamadas pelo Matlab por meio de arquivos MEX.O Matlab tambm pode executar Clculos para programas em C ou em Fortran por meio do Matlab Engine. Estrutura do mex file: A rotina computacional que contm a parte do cdigo que implementa as operaes desejadas no MEX-file. [subrotina em C ou em Fortran] .A rotina de ligao que faz o interfaceamento entre a rotina computacional com o MATLAB atravs do ponto de entrada da funo mexFunction e seus parmetros prhs, nrhs, plhs, nlhs, onde prhs um array com os argumentos de entrada da direita, nhrs o nmero de argumentos de entrada da direita, plhs um array com os argumentos de sada da esquerda e nlhs o nmero de argumentos de sada da esquerda. [Modificao da subrotina] Ser mostrado um exmplo em C. Para mais exemplos e para Fortran,visite o site: http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/
Arquivos de Som :
Som: O Matlab permite a leitura de arquivos de som no formato .wav e .au : >>help auread >>help wavread [armazena o som tipo .au em um vetor] [armazena o som tipo .wav em um vetor]
A leitura cria um vetor no qual o som fica armazenado, para executar necessrio usar o comando sound: >>help sound O arquivo handel um arquivo de amostra do Matlab que contm um som armazenado na forma de um vetor: Ex:>>load handel >>sound(y,Fs)
Arquivos de Imagens:
Imagem: O Matlab permite a exibio de imagens: >>help imread >>image Ex: >>A=imread(foto,jpg) >>image(A) >>axis image off [no exibe os eixos, apenas a figura] [armazena a imagem em uma matriz] [ exibe a imagem em uma janela padro]
Handle:
Como j dito anteriormente cada objeto possui o seu identificador. h-identificador. >>set(h, propriedade1,valor1) [seta o valor da propriedade no valor1] >>get(h, propriedade1) [ fornece o valor da propriedade] >>h=plot(x,y) [ retorna o handle do grfico] >>gca [ retorna o handle do eixo atual] >>gcf [ retorna o handle da figura atual] >>gco [ retorna o handle do objeto atual] >>get(gca,title) [ retorna o handle do titulo no eixo atual] >>get(gca, xlabel) [ retorna o handle do texto na abscissa atual] Usando set podemos editar o tipo da fonte , o tamanho da fonte, a cor, o estilo de linha do grfico, espessura,...basta usar o handle correto.
Propriedades:
Se no editarmos,ao criar uma janela, o matlab usa o padro de configurao.Uma propriedade que muito comum se quere alterar o tamanho e posio de exibio da janela ou caixa de mensagem. A propriedade position que pode alterar isso , a posio esta relacionada com as unidades utilizadas para medio, units: >>figure >>get(gcf,position) [ retorno da posio atual] >>get(gcf,units) [ retorno da unidade usada para medio] Vetor posio= [ esquerda base largura altura] [1 2 3 4]
4 1 3 2
Caixas de Dilogo:
>>help uigetfile [ janela para selecionar arquivo] >>help uiputfile [ janela para salvar arquivo] >>help fileparts [propriedades de arquivo selecionado] >>help uisetcolor [ seleo de cor] >>help uisetfont [ seleo de fonte] >>help warndlg [ caixa de mensagem de warning] >>help errordlg [ caixa de mensagem de erro] >>help helpdlg [ caixa de mensagem de help] >>help questdlg [caixa de pergunta-menu: sim ou no] >>help inputdlg [ caixa para entrada de dados] >>help listdlg >>help menu [ caixa para seleo em lista] [ caixa com menu de opes]
Caixas de Dilogo:
Todos esses comando so fceis de usar, alguns exemplos ser mostrado a seguir: >>h=warndlg( Veja os resultados na tela,titulo) Lembrando, h o handle, podemos editar todas as propriedades, como tamanho, tipo de fonte ,etc...
Os comandos errordlg, helpdlg,msbox, funiconam de maneira similar. >>s=questdlg( Deseja sair?,titulo,sim,no) A seleo retornada como um string em s.
Caixas de Dilogo:
Menu: >>k=menu(titulo, opcao1, opcao2,opcao3) A seleo de um dos botes retorna k=1 se o boto 1 for selecionado, K=2, se o boto 2 for selecionado e assim sucessivamente.
Inputdlg: >>k=inputdlg({ Altura:, Comprimento:},titulo) O retorno e feito em uma clula. K{1} valor dado para a altura e K{2} valor dado para a o comprimento. Para realizar clculos , necessitamos converter para nmeros. K1=k{1}; k1=char(k1); k1=str2num(k1) H=k1;
Uicontrols :
>>help uicontrol O uicontrol permite a criao de uma janela com botes: >>h=uicontrol >>get(h) [ propriedades] >>set(h) Propriedade Style: {pushbutton | togglebutton | radiobutton | checkbox | edit | text | slider | frame | listbox | popupmenu } Propriedade Position: Posio na janela. Propriedade String: Texto escrito no boto. Propriedade BackGroundColor: Cor de fundo
Uicontrols :
Exemplo: pushbutton : >>h=uicontrol(style,pushbutton,string,executar) Pushbuttons servem para executar algum arquivo do matlab.Para editar a chamada do arquivo, devemos inserir o nome do arquivo na propriedade Callback. Set(h,Callback,nome do arquivo) Assim quando acionarmos o boto ele executa o arquivo contido no seu callback.
Uicontrols :
Exemplo: edit : >>h=uicontrol(style,edit) Edit serve para entrar algum dado na prpria janela, ou para retornar sadas. O valor pode ser inserido no edit, usando set: >>set(h,string,2) coloca o valor 2 no edit >>a=get(h,string) retorna o valor contido como um caracter. Devemos converter para numero se quisermos efetuar clculos. >>a=str2num(a) [ converso para numero]
Uicontrols :
Exemplo: text : >>h=uicontrol(style,text) Text serve para escrever textos na janela. >>set(h,string, Meu texto) As propriedades mais importantes so as de formatao, como tamanho da fonte, cor etc... Que podem ser setadas com set.
Uicontrols :
Exemplo: checkbox : >>h=uicontrol(style, checkbox) Checkbox serve para selecionar alguma opo. Se o checkbox estiver acionado, retornado o valor 1 na propriedade Value, e 0 caso no esteja selecionado.
Uicontrols :
Exemplo: axes : >>axes(position, [ ]) Serve para colocar um eixo na janela para plotagem. Assim podemos plotar na prpria janela. No caso de termos, mais de um eixo na mesma janela, necessrio criar o eixo e plotar em seguida sobre ele. Se no inicio j temos eixos vazios basta obter a posio deles atravs do handle e sobrepor novos com o grfico.
Exemplo Uicontrols :
Calculadora:
Exemplo Uicontrols :
Calculadora.m:
%Construcao do Formato: esp=0.2; A=2; B=6; d=[]; %Titulo: ht=uicontrol('style','text','units','centi','position', [A B+2 4.6 1],'string','CALCULADORA'); %Visor: hs=uicontrol('style','edit','units','centi','position',[A+5 ,B-5, 4 , 1],'string',d); %Botao desliga: ho=uicontrol('units','centi','position',[A ,B-5, 1 , 1],'string','OFF','callback','close all'); %Visor de Memoria: hm=uicontrol('style','text','units','centi','position', [A+1.2 B-5 2 1],'string','MEMORY');
Exemplo Uicontrols :
Calculadora.m:
%Construcao dos botes: for i=1:4 for j=1:8 s={'1' '2' '3' '+' 'Raiz' 'Rd' 'SM' ','; '4' '5' '6' '-' 'Log' 'Exp' 'GM' ';';.... ')'}; '7' '8' '9' '*' 'SEN' 'TAN' '[' '('; 'clear' '0' '=' '/' 'COS' '.' ']'
Exemplo Uicontrols :
%Chamada dos botes:
set(h(1,1),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(1,1))]);' ); set(h(1,2),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(1,2))]);' ); set(h(1,3),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(1,3))]);' ); set(h(1,4),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(1,4))]);' ); set(h(2,1),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(2,1))]);' ); set(h(2,2),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(2,2))]);' ); set(h(2,3),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(2,3))]);' ); set(h(2,4),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(2,4))]);' ); set(h(3,1),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(3,1))]);' ); set(h(3,2),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(3,2))]);' ); set(h(3,3),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(3,3))]);' ); set(h(3,4),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(3,4))]);' ); set(h(4,1),'callback', 'set(hs,''string'',d);set(hm,''string'',d);'); set(h(4,2),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(4,2))]);' ); set(h(4,3),'callback', 'm=get(hs,''string'');n=eval(m);set(hs,''string'',n);'); set(h(4,4),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(4,4))]);' );
Exemplo Uicontrols :
%Chamada dos botes cont
set(h(1,5),'callback', 'm=get(hs,''string'');set(hs,''string'',sqrt(str2num(m)));' ); set(h(2,5),'callback', 'm=get(hs,''string'');set(hs,''string'',log10(str2num(m)));' ); set(h(3,5),'callback', 'm=get(hs,''string'');set(hs,''string'',sin(str2num(m)));' ); set(h(4,5),'callback', 'm=get(hs,''string'');set(hs,''string'',cos(str2num(m)));' ); set(h(1,6),'callback', 'm=get(hs,''string'');set(hs,''string'',roun(str2num(m)));' ); set(h(2,6),'callback', 'm=get(hs,''string'');set(hs,''string'',exp(str2num(m)));' ); set(h(3,6),'callback', 'm=get(hs,''string'');set(hs,''string'',tan(str2num(m)));' ); set(h(4,6),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(4,6))]);','fontsize',20 ); set(h(1,7),'callback', 'set(hm,''string'',get(hs,''string''));set(hs,''string'',d);' ); set(h(2,7),'callback', 'm=get(hm,''string'');n=get(hs,''string''); set(hs,''string'',[ n m]);' ); set(h(3,7),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(3,7))]);'); set(h(4,7),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(4,7))]);'); set(h(1,8),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(1,8))]);'); set(h(2,8),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(2,8))]);'); set(h(3,8),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(3,8))]);'); set(h(4,8),'callback', 'm=get(hs,''string'');set(hs,''string'',[char(m) char(s(4,8))]);');:
GUI:
Como vimos anteriormente , necessrio a edio de diversas Propriedades para a criao de uma janela interativa. O Matlab possui um aplicativo que facilita a criao de interfaces. >>guide [ acesso ao GUI]
GUI:
Um duplo clique sobre o uicontrol nos fornece um acesso s suas propriedades e facilmente podemos editar.
GUI:
Ao salvar o arquivo, ele cria um arquivo m com chamadas para os botes. Se no soubermos qual chamada representa o boto, basta dar um clique Com o boto direito do mouse e selecionar editar Callback, a s inserir o nome do programa que ele vai executar A interface salva como um arquivo .fig com um arquivo .m correspondente >>minha_interface [ chama a interface criada]
GUI:
>>nome_do_arquivo