Introdução ao Matlab Prf. José Fajardo Barbachan IBMEC Células e Estruturas • Utilizados para agrupar dados diferentes, mas relacionados • Não permitem operações matemáticas diretamente nelas, mas apenas em seus componentes 1 Células e Estruturas • Células – Identificadas por números • Estruturas – Identificadas por nomes Células • Criação – – – – – cell(l,c) Atribuindo valores à célula Usa os operadores { } Exemplo 1: A(1,1) = {[ 1 2 3]} Exemplo 2: A{1,1} = [1 2 3] 2 Células • Vendo o Conteúdo – celldisp(A) – A{1,1} ou A(1,1) • Manipulação – Os mesmos métodos de manipulação utilizados por matrizes funcionam com células • Ex.: A{:,1} Células • Manipulação – – – – size reshape repmat iscell 3 Células • Trabalhando com os conteúdos – Você pode acessar um elemento de uma célula considerando que o endereço completo da célula é uma matriz. – Exemplo: x = A{1,1}(2,2) Estruturas • Ao invés de ser um conjunto acessado por números, é acessado por nomes – Ex.: Bbas4.Data = 3; Bbas4.Preco = 8.5 • Possui campos. No caso do exemplo acima os campos seriam Data e Preco • Permite criação de estruturas dentro de estruturas 4 Estruturas • Nomes de campos têm as mesmas restrições dos nomes das variáveis • Para acessar dados na estrutura o índice é aplicado ao nome da estrutura – Ex: Bbas4(2).Data • É bastante útil na utilização de funções e para indexação conjunta de dados Estruturas • Manipulação de Estruturas – Os mesmos conceitos aplicados a matrizes e células são aplicados às estruturas • Funções – – – – fieldnames isfield class isstruct 5 Estruturas • Funções – rmfield • Ex: – Fnames = fieldnames(circle) – Circle2 = rmfield(circle,fnames{5}) – getfield – setfield M-files • São utilizados com 2 propósitos – Scripts • Usam o workspace vigente (variáveis) • Não recebem argumentos nem devolvem respostas – Funções • Usam seu próprio workspace • Podem receber argumentos e devolver respostas 6 Scripts • Executam uma sequência de comandos prédefinida • Funções Úteis – disp(variável)- Mostra o conteúdo da variável sem mostrar seu nome. Pode ser usado para mostrar textos ou mesmo números que não estejam armazenados em variáveis Scripts • Funções Úteis – echo on/off – Controla a saída do script no command window. – input – Solicita ao usuário entrada de dados – keyboard – Devolve controle ao teclado até que seja digitado “return” para o comando voltar para o script 7 Scripts • Funções Úteis – pause ou pause(n) – Coloca o script em estado de espera até que o usuário aperte alguma tecla, ou espera “n” segundos. – waitforbuttonpress – Coloca o script em estado de espera até que o usuário aperte o botão do mouse ou alguma tecla Scripts • Scripts especiais – – – – matlabrc.m pathdef.m startup.m finish.m 8 Scripts • Exemplo de finish.m Pergunta = 'Tem certeza que quer sair?'; Botao = questdlg(Pergunta,'Finalizaçao','Sim','Nao','Nao'); switch Botao case 'Nao' quit cancel; % Desiste de finalizar end % Se nao for Nao deixa sair Exercício • Fazer um script que solicita a indicação de dois vetores e cria uma estrutura com campos ‘Acao1’ e ‘Acao2’. • Transformá-los em retornos criando uma célula • Calcular algumas estatísticas descritivas dos retornos e apresentá-las de forma agradável • Estatísticas Descritivas: – Média, Desvio Padrão, Máximo, Mínimo • Usar o banco de dados Aula2.mat para obter os vetores 9 Strings • O Matlab trata originalmente Strings como array de números • Esses números são os códigos ASCII desses caracteres • Exemplo: t = ‘Um exemplo de string’ Strings • Funções Básicas – Todas as funções de matrizes – double – Mostra os códigos ASCII da string • Para manipular Strings as mesmas funções utilizadas pelas matrizes são válidas • Para representar um ‘ dentro da String basta colocar dois consecutivos 10 Strings • Para strings com mais de uma linha deve-se ter o mesmo número de caracteres em cada linha. • Função strvcat – Cria um array com várias linhas de string automaticamente uniformizando seu tamanho Strings • Função strcat – Concatena strings • Função deblank – Retira espaços em branco de sobra • Outras funções úteis – int2str – num2str 11 Strings • Outras funções úteis – fprintf • Formatar números – sprintf • Formatar Strings • fname=sprintf(‘mydata%.0f.dat’,i) – sscanf • É a função recíproca a sprintf Strings • Soluções para se ter tamanhos diferentes – Estruturas – Células • Mais funções úteis – – – – cellstr(S) blanks(n) ischar(S) Iscellstr(C) 12 Strings • Mais funções úteis – – – – – – strcmp(S1,S2) strcmpi(S1,S2) findstr(S1,S2) strmatch(S1,S2) upper(S) lower(S) Exercício • Criar um script que execute os seguintes passos: – Solicite um nome de 2 ações – Procure na estrutura Acoes os nomes e tendo-os calcular as séries de retornos. – Calcular o retorno esperado e o risco de cada ação – Solicitar o vetor com os pesos do portfolio – Calcular o retorno esperado e o risco da carteira – Mostrar os resultados de forma amigável 13