A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Curso MATLAB 6 Instrutor: Marcelo Escobar Tópicos Especiais.

Apresentações semelhantes


Apresentação em tema: "Curso MATLAB 6 Instrutor: Marcelo Escobar Tópicos Especiais."— Transcrição da apresentação:

1 Curso MATLAB 6 Instrutor: Marcelo Escobar Tópicos Especiais

2 Tópicos Especiais: Importação e Exportação de Dados. Interfaces de Programação Arquivos de áudio e vídeo. Interfaces gráficas com o Usuário.

3 Importação\Exportação de Dados e Informações:. Podemos exportar e importar dados através de um procedimento interativo ou automático. Normalmente quando criamos rotinas queremos automatizar a troca de dados entre aplicativos e programas.Em casos mais simples podemos apenas querer ler uma tabela em excel sem ter que digitar todos os dados em Matlab. A seguir temos exemplos de que forma podemos fazer isso entre os aplicativos mais comuns e utilizados não só na troca de dados(importação e exportação) como na troca de informações (interface de programação). Mais simples possível: File Import Data no menu do Matlab

4 Importação 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]

5 Importação de Dados: Podemos querer abrir um arquivo de texto e escrever nele dados de saída da nosso programa: >> help fopen [abri ou cria um arquivo novo] retorna um fid [identificador do arquivo] >>fid=fopen(resultados.txt,w) permissão Tipos de Permissão: 'r' [leitura] 'w' [escrita (criação se necessário)] >>help fclose [fecha o arquivo] >>fclose(fid) Escrita: >>help printf [escreve dados formatados]

6 Importação de Dados: Devemos escrever o texto e indicar com % a posição do número e inserir a formatação. %a.bc: a= número de espaços, b=numero de dígitos. c=Formatos: d, i, o, u, x, X, f, e, E, g, G, c, s f-real. e-notação cientifica Após 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: Exemplo 2: x = 0:.1:1; y = [x; exp(x)]; fid = fopen('exp.txt','w'); fprintf(fid,'%6.2f %12.8f\n',y); fclose(fid); >>help scanf [ lê dado de um arquivo]

7 Importação/Exportação de Dados: Via Troca Dinâmica de Ddados [DDE] e ActiveX. >>help winfun 1)DDE: Canal=ddeinit(excel, nome_do_arquivo.xls) [inicio de comunicação] M = ddereq(canal, 'r1c1:r2c2'); [ importação] N=ddepoke(canal,'r1c1:r5c5', eye(5)); [exportação] rc=ddeterm(canal) [ fim de comunicação]

8 Active X: Exemplo Excel 2) Active X: Excel = actxserver('Excel.Application'); [ inicio] set(Excel, 'Visible', 1); [abrindo excel] Workbooks = Excel.Workbooks; [inserido planilhas] Para arquivo novo: Workbook = invoke(Workbooks, 'Add'); Para arquivo existente: fid=invoke(Workbooks,'Open','myfile.xls'); Ativação da Planilha 2 por exemplo: Sheets = Excel.ActiveWorkBook.Sheets; sheet2 = get(Sheets, 'Item', 2); invoke(sheet2, 'Activate');

9 Active X: Exemplo Excel Pegando o handle da planilha ativa: Activesheet = Excel.Activesheet; Dado que desejamos enviar: [ importação] A = [1 2; 3 4]; Definindo o Range: ActivesheetRange = get(Activesheet,'Range','A1','B2'); set(ActivesheetRange, 'Value', A); [ inserindo o valor A] Salvando e Fechando o Excel: invoke(Workbook, 'SaveAs', 'myfile.xls'); invoke(Excel, 'Quit'); Obs: podemos usar get para importar do excel de maneira similar.

10 Active X: Exemplo Word: Active X: Word Wrd=actxserver(Word.Application); Wrd.Visible=1; [torna o Word visível] Para arquivo novo: Doc=invoke(wrd.Documents,Add); Para arquivo existente: Doc=invoke(wrd.Documents,Open,myfile.doc); Inserir parágrafo: 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);

11 Active X: Exemplo Word: Salvando: Invoke(Doc,SaveAs, name,1); Fechando o Documento: Invoke(Doc,Close); Terminando Contato: Invoke(wrd,Quit); Delete(wrd); Obs: O comando invoke(nome da application), permite acesso a suas propriedades.

12 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 são acionadas por botões na barra de ferramentas: macros

13 Excel Link: Putmatrix [exporta do Matlab] Basta selecionar os dados a serem enviados, clicar em putmatrix e definir o nome da variável a ser criada no Matlab. Getmatrix[importa para o matlab] Basta selecionar a célula superior esquerda onde será colado o dado do matlab clicar em getmatrix e definir o nome da variável putmatrix e definir o nome da variável do Matlab.

14 Matlab Notebook: Permite a execução de comandos digitados no word, uma ferramenta bem útil para relatórios. Para utilizar o Matlab notebook é necessário realizar um setup: Digite: >>notebbok –setup O Matlab pede a versão do seu Word e em seguida pede dois arquivos por meio de uma caixa de dialogo, um executável e outro.dot (normal.dot por exemplo).Esses arquivos se encontram dentro do diretório 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.

15 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}

16 Compilação de Funções: O Matlab permite a compilação de um arquivo m em C, o que pode reduzir o tempo de computação em até 40%. Exemplo: >>mcc –x teste_mcc [teste_mcc.m é um arquivo tipo m] A chamada é feita normalmente, e não é necessário que o arquivo m permaneça no diretório. >>Mcc –m teste_mcc [cria um executável]

17 MEX Files: Funções e sub-rotinas em C ou em Fortran podem ser chamadas pelo Matlab por meio de arquivos MEX.O Matlab também pode executar Cálculos para programas em C ou em Fortran por meio do Matlab Engine. Estrutura do mex file: A rotina computacional que contém a parte do código que implementa as operações desejadas no MEX-file. [subrotina em C ou em Fortran].A rotina de ligação que faz o interfaceamento entre a rotina computacional com o MATLAB através do ponto de entrada da função mexFunction e seus parâmetros prhs, nrhs, plhs, nlhs, onde prhs é um array com os argumentos de entrada da direita, nhrs é o número de argumentos de entrada da direita, plhs é um array com os argumentos de saída da esquerda e nlhs é o número de argumentos de saída da esquerda. [Modificação da subrotina] Será mostrado um exmplo em C. Para mais exemplos e para Fortran,visite o site:

18 MEX Files para C e C++:

19 Exemplo: No editor do Matlab #include "mex.h" /* A rotina de cálculos */ void timestwo(double *y, double x) { *y = 2.0*x; } /* A rotina de ligação */ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ) { double *y; double x; plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL); /* Cria matrix 1x1 */ x = mxGetScalar(prhs[0]); /* Obtém o valor escalar e coloca em x */ /* A função mxGetScalar retorna um valor, não um apontador */ y = mxGetPr(plhs[0]); /* Referencia o apontador para y */ timestwo(y,x); } /* Chama a função de cálculo */ Salvar como: timestwo.c >>mex timestwo.c [cria o arquivo mex] >>timestwo(4) >>8

20 Arquivos de Som : Som: O Matlab permite a leitura de arquivos de som no formato.wav e.au : >>help auread [armazena o som tipo.au em um vetor] >>help wavread [armazena o som tipo.wav em um vetor] A leitura cria um vetor no qual o som fica armazenado, para executar é necessário usar o comando sound: >>help sound O arquivo handel é um arquivo de amostra do Matlab que contém um som armazenado na forma de um vetor: Ex:>>load handel >>sound(y,Fs)

21 Arquivos de Imagens: Imagem: O Matlab permite a exibição de imagens: >>help imread [armazena a imagem em uma matriz] >>image [ exibe a imagem em uma janela padrão] Ex: >>A=imread(foto,jpg) >>image(A) >>axis image off [não exibe os eixos, apenas a figura]

22 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 gráfico] >>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 gráfico, espessura,...basta usar o handle correto.

23 Propriedades: Se não editarmos,ao criar uma janela, o matlab usa o padrão de configuração.Uma propriedade que é muito comum se quere alterar é o tamanho e posição de exibição da janela ou caixa de mensagem. A propriedade position é que pode alterar isso, a posição esta relacionada com as unidades utilizadas para medição, units: >>figure >>get(gcf,position) [ retorno da posição atual] >>get(gcf,units) [ retorno da unidade usada para medição] Vetor posição= [ esquerda base largura altura] [ ] >>get(0) nos fornece as propriedades padrão do Matlab

24 Caixas de Diálogo: >>help uigetfile [ janela para selecionar arquivo] >>help uiputfile [ janela para salvar arquivo] >>help fileparts [propriedades de arquivo selecionado] >>help uisetcolor [ seleção de cor] >>help uisetfont [ seleção 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 não] >>help inputdlg [ caixa para entrada de dados] >>help listdlg [ caixa para seleção em lista] >>help menu [ caixa com menu de opções]

25 Caixas de Diálogo: Todos esses comando são fáceis 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,não) A seleção é retornada como um string em s.

26 Caixas de Diálogo: Menu: >>k=menu(titulo, opcao1, opcao2,opcao3) A seleção de um dos botões retorna k=1 se o botão 1 for selecionado, K=2, se o botão 2 for selecionado e assim sucessivamente. Inputdlg: >>k=inputdlg({ Altura:, Comprimento:},titulo) O retorno e feito em uma célula. K{1} valor dado para a altura e K{2} valor dado para a o comprimento. Para realizar cálculos, necessitamos converter para números. K1=k{1}; k1=char(k1); k1=str2num(k1) H=k1;

27 Uicontrols : >>help uicontrol O uicontrol permite a criação de uma janela com botões: >>h=uicontrol >>get(h) [ propriedades] >>set(h) Propriedade Style: {pushbutton | togglebutton | radiobutton | checkbox | edit | text | slider | frame | listbox | popupmenu } Propriedade Position: Posição na janela. Propriedade String: Texto escrito no botão. Propriedade BackGroundColor: Cor de fundo

28 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 botão ele executa o arquivo contido no seu callback.

29 Uicontrols : Exemplo: edit : >>h=uicontrol(style,edit) Edit serve para entrar algum dado na própria janela, ou para retornar saídas. 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 cálculos. >>a=str2num(a) [ conversão para numero]

30 Uicontrols : Exemplo: text : >>h=uicontrol(style,text) Text serve para escrever textos na janela. >>set(h,string, Meu texto) As propriedades mais importantes são as de formatação, como tamanho da fonte, cor etc... Que podem ser setadas com set.

31 Uicontrols : Exemplo: checkbox : >>h=uicontrol(style, checkbox) Checkbox serve para selecionar alguma opção. Se o checkbox estiver acionado, é retornado o valor 1 na propriedade Value, e 0 caso não esteja selecionado.

32 Uicontrols : Exemplo: axes : >>axes(position, [ ]) Serve para colocar um eixo na janela para plotagem. Assim podemos plotar na própria janela. No caso de termos, mais de um eixo na mesma janela, é necessário criar o eixo e plotar em seguida sobre ele. Se no inicio já temos eixos vazios basta obter a posição deles através do handle e sobrepor novos com o gráfico.

33 Exemplo Uicontrols : Calculadora:

34 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 ],'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');

35 Exemplo Uicontrols : Calculadora.m: %Construcao dos botões: 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' '.' ']' ')'}; h(i,j)=uicontrol('units','centi','position',[ A+(j-1)*1.2,B-(i-1)*1.2,1,1]...,'string',s(i,j),'fontsize',10); end

36 Exemplo Uicontrols : %Chamada dos botões: 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))]);' );

37 Exemplo Uicontrols : %Chamada dos botões 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))]);');:

38 GUI: Como vimos anteriormente, é necessário a edição de diversas Propriedades para a criação de uma janela interativa. O Matlab possui um aplicativo que facilita a criação de interfaces. >>guide [ acesso ao GUI] Um arraste permite a inserção de uicontrols.

39 GUI: Um duplo clique sobre o uicontrol nos fornece um acesso às suas propriedades e facilmente podemos editar.

40 GUI: Ao salvar o arquivo, ele cria um arquivo m com chamadas para os botões. Se não soubermos qual chamada representa o botão, basta dar um clique Com o botão 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]

41 GUI: >>nome_do_arquivo Exemplos: Diretório do CD-ROM Rotinas\Especiais


Carregar ppt "Curso MATLAB 6 Instrutor: Marcelo Escobar Tópicos Especiais."

Apresentações semelhantes


Anúncios Google