Introdução a Programação:
ProcessamentoEntradas Saídas
Dados Fornecidosao Programa
Argumentos deEntrada
Lógica de ProgramaçãoAlgoritmo
Linguagem
Seqüência de comandos
Dados Fornecidospelo Programa
Argumentos deRetorno
Ex:Dados ??? Retornarx1, x2, x3 menor Valor
Algoritmo:
Sequência de Passos Lógicos:Independente da Linguagem.
Dados: x1, x2, x3 Ler x1Comparar x1 e x2Se x1 < x2, min= x1Se x2 < x1, min= x2Comparar min e x3 Se min<x3 , min=min
Se x3 <min,min=x3 Retornar: min
Obs: Dúvidas? Referências/Lógica de Programação no CD rom
Linguagem MATLAB:
Núcleo da Linguagem formada por vetores e Matrizes.
Recursos de Programação.
Ferramenta de Interface Gráfica com o Usuário.
Caixas de Ferramentas.
Comand Window: [ área de trabalho]
>>demo [apresenta uma série de demonstrações de uso]
>>tour [apresenta um tour pelo matlab]
Comand Window: Área de Trabalho.
Comand History: Registro de Comandos executados na C.W.
Current Directory: Mostra Arquivos presentes no Diretorio Atual.
Worspace: Armazenamento de Variáveis criadas na Comand Window.
M-file Editor: Área de Edição de arquivos.
Launch Pad: Caixas de Ferramentas do matlab.
Simulink: Ferramenta do Matlab para Sistemas Dinâmicos.
Janelas MATLAB:
Tipos de Variáveis :
Real , Inteira: double array- variáveis numéricas.
Complexa: double array (complex)-variáveis numéricas.
Caracter: Char array-variáveis de texto.
Célula: cell array-Permite armazenamento de variáveis de tipos diferentes no formato celular do Matlab.
Estrutura: struct array-Permite armazenamento de variáveis de tipos diferentes no formato estrutural do Matlab.
Formato de Variáveis Numéricas :
>>help format
>>format short [5 dígitos]
>>format short e [5 dígitos +expoente]
>>format long [16 dígitos]
>>format long e [16 dígitos +expoente]
>>format + [positivo, negativo ou 0]
>>format rat [Aproximação racional]
Comandos do MATLAB :
Na comand Window: ( >> “sinal de prompt” )>>helpdesk [documentação]>>helpwin [help on line]>> help [ lista os tópicos de ajuda]
Ex: >>help elfun [ funções matemáticas]Fornece uma listagem de funções.Para verificar o funcionamento de cada função:
Ex:>>help sin [sin(X) is the sine of the elements of X.]
De maneira Geral:
[saída1,...,saídan]=comando(entrada1,...,entradan)
lookfor: procura de comandos com alguma palavra.
Primeiros Passos:
Após abrir o Matlab e fazer um reconhecimento geral, a primeira coisa a se fazer após editar as suas preferências, é selecionar o diretório de trabalho.Caso isso não seja feito, o Matlab salva os arquivos na pasta Work dentro do diretorio no qual o Matlab se encontra instalado.
Como mudar o Diretório?
Opção 1: Na barra de ferramentas, em current directory, clicar no botão [...] e selecionar o diretorio como no explorer.
Opção 2: usando o comando [ cd ] e digitar todo o caminho do diretorio, lembrando que nesse caso, não deve haver espaços nem caracteres especiais. [help cd].
>>cd c:\meus_documentos
Como criar Variáveis:
Atribuição: [ = ] x Equivalência: [==] :
Ex: >>A=2 [atribui a A o valor numérico 2]>>A==2[A=2 ?, retorna 1 se verdadeiro e 0 se falso]
Matlab é case Sensitive.[ Variável A é diferente de a]
Caso não se forneça o nome da variável de atribuição, o Matlab cria uma variável chamada ans.[answer].
Se a variável já existe, o matlab armazena sempre a ultima atribuição feita.
Deve-se evitar dar nomes às variáveis usando nomes de comandos internos do matlab ou usando variáveis especiais que controlam o fluxo da programação. O nome da variável deve começar por uma letra e não deve conter caracteres especiais nem espaço.
Como criar Variáveis:Variáveis Especiais:
For end if while function elseif case otherwise switch continue else try catch global persistent break
Dica: Para saber se o nome da variável é um comando interno do matlab, basta dar um >>help [nome da variável].Caso não seja, o matlab retorna uma mensagem dizendo que a variável [nome] não foi encontrada.
Comandos de Gerenciamento: >> help generalWho: lista as variaveis atuaisWhos: lista as variaveis atuais com seus respectivos tipos.What: lista os arquivos no diretorio atual.Cd: seta o diretorio.Pwd: retorna o caminho do diretorio atual em uma variável.Clear: limpa as variaveis atuais[clear all]Clc: limpa a tela de comando sem deletar as variaveis.Close all: fecha as janelas de figuras abertas.
Como criar Variáveis:Execução de comandos:
[;]-no final do comando executa e não exibe resultado.
[,]-permite a execução de dois comandos na mesma linha, lembrando que eles são executados seqüencialmente.
[Crtl+C] -interrompe a execução do comando, usado no caso de travamento durante a execução.
[ ] -retorna as linhas executadas anteriormente.
[%]-indica comentário
[...]-permite continuação de escrita do comando na linha seguinte
ex: A=2.1;B=3*A;
Comandos de Dimensionamento:
length: dimensão do vetor
size: dimensão da matriz
Vetores:Criando um vetor:
Opção 1: >> C=[1 2 3 4 5] ou >> C=[1 ,2 ,3 ,4 ,5]
Opção 2: Usando comando linspace, ou logspace.
linspace(valor inicial, valor final, número de pontos)
linspace cria um vetor linearmente espaçado.
>>C=linspace(1,5,5)
Opção 3: >>C=1:1:5
Valor inicial: incremento: valor final
Opção 4: Usando estrutura for
For i=1:5
C(i)=i; end
Obs: >>A=2;
O matlab encara a variável A como uma matriz 1x 1.
Manipulação de Vetores:
Operações Básicas: +, - ,* ,/, ^
Operações Ponto a Ponto: ./, .*, .^
Transposição: C’ [ transposta de C-usa aspas simples]
Operações elementares:
Log exp sin cos tan etc...
>>help elfun
Ex:
>> a=[ 1 2 3]; b=[ 4 5 6];
>> a.*b
>>a*b’
Matrizes:
Como criar:
Opção 1: a partir de vetores
C=[ 2 3];D=[ 3 4]; M=[C;D]
Opção 2: M= [ 2 3; 3 4] ou M=[ 2,3; 3, 4];
Opção 3: usando estrutura for
For i=1:2
For j=1:2
M(i,j)=i+j;
end
end
>>help printmat [ exibição da matriz na tela]
Manipulação de Matrizes:
Além das operações já citadas anteriormente para vetores.
>>help elmat
>>help matfun
>>help sparfun
Produto Matricial: A*B
Inversa: inv(A)
Determinante: det(A)
Posto: rank(A)
Valores Caracteristicos: eig(A)
rand , eye, zeros, ones- criam matrizes de ordens definidas.
Indexação de Matrizes:
M(linha, coluna)
M(1,1)- retorna elemento M11
Caso não seja especificado a coluna da matriz, o que não é necessário no caso de vetores, ele considera o vetor coluna 1.
Ex: A=[ 1 2; 3 4]
A(1)=1 A(2)=3
Pode-se também usar incrementos:
C=[ 1 2 3; 4 5 6];
C(1:2,2)=[2 ;5]; C(1,1:2:3)=[1 3];
C(1,2:3)=[2 3];
C(:,3)=[3; 6];
[:] indica todas as linhas ou colunas.
Matrizes Celulares:
Opção 1: Criando matriz celular vazia e depois preencher
M=cell( num linhas, num colunas), M=cell(2,3)
Opção 2: Preencher direto
M(1,1)={ [ 1 2; 3 4]}
Indexação de posições celulares:
M{ linha 1, coluna j}: M{1,2}=[ 1 2; 3 4];
Indexando elemento internos das células:
M{1,2}(2,1)=3
>>cellpisp – exibe toda a célula
Utilizada para armazenar variáveis matriciais ou de diferentes tipos com fácil indexação.
Estruturas:
Como criar? Variável: Marcelo
Marcelo.idade=25
Marcelo.peso=70
Marcelo.altura=1.70
Variável utilizada para armazenar variaveis de tipos diferentes de uma forma estruturada. Utilizada por exemplo em Banco de dados com fácil acesso de informações.
Variáveis de Texto:Como criar?
D=‘valores’
E=‘ resultados obtidos’
>>disp(D); exibe o texto contido em D
>>eval(‘D’) ; avalia o conteúdo do string.
Ex:
>>T=‘D=2’;
>>eval(T); cria a variável D.
Concatenação:
Str=[ ‘valor=‘ ‘D’]
Vamos ver melhor para que a concatenação em interfaces.
Conversão de Variáveis:
>>help datatypes
>>help strfun
>>Char [ converte para caracter]>>Double [ converte para número]>>int2str [ converte de inteiro para string]>>str2int [converte de string para inteiro]>>num2str [converte de real para string]>>str2num [converte de string para real]
Funções de Arredondamento:
>>help elmat
>>help fix [Arredonda na direção do zero]>>help floor [Arredonda na direção de -oo]>>help ceil [Arredonda na direção de +oo]>>help round [na direção do inteiro mais próximo]
>>help rem [ resto de divisão]>>help abs [ modulo]>>help singn [ sinal ]
Operações Relacionais e Lógicas:
>>help ops
Operadores Relacionais:< - menor que<= -menor ou igual> - maior que>= -maior ou igual== - equivalência~= -diferente
Operadores lógicas:& -e| -ou~ -não
Operações Relacionais e Lógicas:
Retornam sempre 1 se verdadeiro e 0 se falsoExemplos: v=[ 1 -2 3 -4 5]
V>0: [ 1 0 1 0 1](V>0) & (V<4): [ 1 0 1 0 0](V==1) | (V<0): [ 1 1 0 10]~(V<0): [ 10 10 1]
Comando find:n=find(v>0)Ou [n,m]=find(v>0)N-linhaM-colunaEncontra os índices da matriz que satisfazem operações relacionais e lógicas.
Funções Relacionais e Lógicas:
Retornam sempre 1 se verdadeiro e 0 se falso.
xor: [ ou]any: [ qualquer]all: [todos]isreal: [ verdadeiro se real]iscomplex: [ verdadeiro se complexo]isprime: [ verdadeiro se primo]isifinite: [ verdadeiro se infinito]isnan: [ verdadeiro se não é um número]
Controle de Fluxo:
>>help lang
Teste condicional:
If else end
Teste múltiplo:
Switch case otherwise
Exemplos: If A==0 switch AB=3 case 0 ; B=3;Else otherwise; B=4; endB=4end
Se A é igual a zero B=3 senão B=4.
Controle de Fluxo:
Loops:
For i=1:10A(i)=i;endA=[ 1 2 3 4 5 6 7 8 9 10]
O uso da estrutura for, limita o número de iterações, ou seja, o número de vezes que os comandos são executados.it=0;While it<10it=it+1;A(it)=it;EndA=[ 1 2 3 4 5 6 7 8 9 10]A estrutura while permite a execução até que um critério seja satisfeito.
Arquivos M:>> edit
Ou Menu File– New--- M-fileO uso do editor permite que os comandos a serem executados sejam salvos em um arquivo.
Tipos de arquivos:Script [ entradas definidas internamente ou interativamente]Function [ arquivo genérico com entradas e saídas]
Ex: Script [soma.m] Função [som.m]A=2; B=3; function S=soma(A,B)Soma=A+B S=A+B;
Execução:>>soma ou >>som(2,3)
>>help type [ exibe m-file na tela]
Argumentos de Arquivos M:>>help iofun
Entrada de dados:>> help xlsread [ lê dados de uma planilha em excel]>>help input [ recebe entrada de dados na Comand Window]>>help dlmread [ lê dados em arquivo de texto]>>help save [salva dados em arquivo .mat]>>help load [carrega dados de arquivos .mat]
Saída de dados:>> help diary [registro do log da sessão]Pode ser usado para armazenar resultados em arquivo txt.>>help disp [exibição de texto e de variáveis na tela]
Interfaces mais avançadas será vista no capitulo Interfaces com o usuário
Argumentos de Arquivos M:>>help nargin [numero de argumentos de entrada de uma função]
>>help nargout [numero de argumentos de uma função]
Nargin pode ser usado para usar entradas opcionais.Nargout pode ser usado para limitar a execução de linhas de comando desnecessaria se um dos argumentos de saída não é pedido na chamada da função.Quando criamos as nossas funções, podemos inserir um texto de ajuda antes da primeira linha de comando, assim quando executarmos help nome_da_função esse texto será exibido na tela.
function [s1,s2]=nome(e1,e2)%Digite aqui o help da funçãoif nargin<2;e2=0.001;endS1=e1+e2; if nargout<1; s2=2*e2;end
Execução de Arquivos M:>>help pause [permite uma pausa durante a execução]
>>help echo [escreve na tela as linhas de comando]
>>help beep [emite um sinal sonoro]
>>help error [emite uma mensagem de erro na tela]
>>help warning [emite uma mensagem de warning na tela]
>>help keyboard [suspende execução até que o teclado seja acionado]
>>help waitforbuttonpress [suspende execução até que o mouse seja acionado]
Variáveis Globais e Locais:A execução de um arquivo m como um script, lê as variáveis existentes no workspace e salva todas as variáveis criadas durante sua execução.
No entanto, quando executamos um arquivo m tipo function, este não lê as variáveis existentes no workspace, lê apenas as variáveis dadas na entrada do programa ou aquelas definidas internamente. Além disso, a function pode até exibir na tela resultados se não usarmos [;] no final da linha, mas ela só retorna os argumentos assinados em sua saída e não salva as demais variáveis no workspace.
Para que uma function leia uma variável definida externamente, é necessário definir essa variável como global em todos os arquivos em que ela é utilizada, ou passar como parâmetro de entrada.
Variáveis Globais e Locais:A desvantagem de passar como parâmetro, é que se usarmos uma sub-rotina pronta sendo chamada pelo nosso arquivo principal, precisamos alterar a mesma para esta receber as variáveis.
Ex:Queremos resolver uma equação na forma
F(x)= x2 –ax+2, onde a é fornecido pelo usuário.
Sub-rotina:Function y=f(x)global aY= x2 –ax+2;
Programa principal:Function s=main(a)global as=fsolve(‘f’,0);
Sub-rotina:Function y=f(x,a)Y= x2 –ax+2;
Programa principal:Function s=main(a)s=fsolve(‘f’,0,[],a);
Ou
Variáveis Globais e Locais:
Nesse caso, a função fsolve, já possui uma entrada para parâmetros, mas muitas vezes quando usamos uma rotina genérica para resolver nosso problema, temos que redefinir a entrada da função e a depender da complexidade do programa temos que alterar em varias linhas e isso deixa a nossa sub rotina menos genérica.
O sugerido é usar variáveis globais, e sempre no inicio dos programas usar um clear all para limpar as variáveis existentes no workspace evitando confusão na memória durante a execução de nossos problemas.
Debugando Arquivos M:Debugar, consiste em depurar o programa, ou seja, verificar a existência de erros.
>>help depfun [ dependências do arquivo]
Permite o retorno de diretórios utilizados, funções utilizadas,dentre outras informações.
>>help profile [ Perfil de desempenho]Traça um perfil de desempenho, com o tempo associado à execução de cada comando, dentre outras informações.
Uso:>>profile on>>minha_função>>profile report
Top Related