Você está na página 1de 67

Software matlab caractersticas gerais Apresentao da interface Variveis, funes e comandos bsicos Linguagem de programao Matlab

Mostra todos os arquivos atuais na pasta Matlab;

Mostra o histrico de todos os comandos realizados na command window

Mostra todas as variveis criadas e seus respectivos tipos

Terminal e janela de realizao de comandos individualmente

Janela de criao de programas e funes Matlab

Variveis sempre definidas como matrizes de dimenso N

Sem necessidade de especificar tipo de varivel Varivel recebe tipo de acordo com valor recebido: valor numrico Double (padro) texto - char true, false, comparao - logical @funo function_handle

Mudar exibio das variveis numricas: File -> Preferences -> Command Window-> Numeric Format

Funes so utilizadas da mesma forma que em C#, C++, Java: Funo com retorno: x = funo(parmetros); Ex: x = cos(3.14) x = -1 Principais funes matemticas: sin, cos, tan, sind, cosd, tand, asin, acos, atan, log, log2, log10, sqrt, int, diff,

Criar um programa para criar duas variveis numricas (a=4 e b=5), uma outra que recebe a raiz da soma delas (c=sqrt(a+b)) e a seguir, imprimir o resultado no terminal (command window):

a = 4; b = 5; c = sqrt(a+b); display(c);

Variveis lgicas -> a = true, a = false, a = comparao Ex: b = 3; c = 4; a = (b<c); display(a); //a = 1; a = ~a display(a); //a = 0;

Unidade imaginria: i ou j Ex: a = 3 + 4*i a = 3.0000 + 4.0000i Comandos: imag(a) = 4 real(a) = 3 abs(a) = 5 angle(a) = 0.9273

Funes de sada de dados no terminal: display(x) exibe o nome da varivel e seu contedo. display(Texto) exibe o texto inserido. fprintf(Texto) exibe o texto inserido - Funciona da mesma forma que a funo printf da linguagem C# - Permite exibir texto e variveis simultaneamente.

''

Single quotation mark

%%
\\ \a

Percent character
Backslash Alarm

\b
\f \n \r \t \v

Backspace
Form feed New line Carriage return Horizontal tab Vertical tab

Funo de entrada de dados: input x = input(Texto de orientao: ); x receber um valor numrico ou uma expresso digitada pelo usurio. Ex: 23.124; 34+4*23; a+b^c+3 (a, b, c = variveis j declaradas no programa) x = input(Texto de orientao: , s); x receber a entrada do usurio como uma string.

Declarao de vetores e matrizes Manipulao Funes

Matriz declarada da mesma forma que variveis, com valores colocados entre colchetes [] Valores na coluna seguinte so separados por (,) Valores na linha seguinte so separados por (;) Ex: a = [1, 2, 3; 4, 5, 6; 7, 8, 9] a=1 2 3 4 5 6 7 8 9

Ferramenta : Ex: a = 1:5 a = 1 2 3 4 5 a = 0:0.1:1 a = 0.1 0.2 0.3 (...) 0.8 0.9 1 a = [1:3 ; 4:6; 7:9] a = 1 2 3 456 789

Exerccio: Construir uma matriz 3x5, em que a lei de formao da primeira linha seno, a segunda cosseno e a terceira raiz quadrada. Utilize para cada linha o vetor v = 0:0.25:1
a= 0 0.2474 0.4794 0.6816 0.8415 1.0000 0.9689 0.8776 0.7317 0.5403 0 0.5000 0.7071 0.8660 1.0000

Acessando elemento: x(linha,coluna) = an Acessando linha: x(linha, :) = [a1, a2, a3, ... , an] Acessando coluna: x(: , coluna) = [a1; a2; a3; ... ; an] Apagando linha ou coluna: x(linha, :) = [ ] x(coluna,:) = [ ]

Exerccio: Criar um programa que calcule a distncia entre dois pontos. P1 = (1,5), P2 = (4,9) R: d = sqrt(sum(P1-P2)); d=5

Indexao de elementos:

Exerccio: Resolver o seguinte sistema linear: x + 10y 12z = 120 4x 2y 20z = 60 -x + y + 5z = 10 Matriz inversa: inv(A) Escalonamento: rref(A) Determinante: det(A)
Resp: x = 340; y = 50; z = 60

Resolver o sistema: 5j*x + (2-6j)*y + 7*z = log5(20) 9*x pi*y + sqrt(2)*z = 10.569 (1/3)*x + sen(30)*y + atan(2)*z = 21.3

Exerccio: Uma empresa apresenta as seguintes tabelas de Produo x Hora x Ms. Salve-as em uma nica varivel.
A = [30, 15; 20, 36]; A(:,:,2) = [12, 17; 9, 15]; A(:,:,3) = [21, 41; 45, 39];

Strings declaradas com aspas simples: nome = Joao; sobrenome = da Silva; Juntar ambas strings numa matriz: horizontalmente: (matriz 1x12) completo = [nome, sobrenome]; completo = strcat(nome, sobrenome); verticalmente: (matriz 2x8) completo = strvcat(nome, sobrenome);

Podem ser tanto Scripts quanto Functions: Script arquivo contendo simplesmente uma sequncia de comandos do MATLAB. Utiliza e cria variveis do workspace Function faz uso de suas prprias variveis locais, recebem parmetros externos e retornam valores.

Executa teste lgico com expresso. Se resultado = 1 (true) : executa comandos Se resultado = 0 (false) : pula para prxima expresso Forma geral: if (expresso1) comandos1; elseif (expresso2) comandos2; else comandos 3; end

if (a == 0) display('zero'); elseif (a >= b) display('maior'); display(a); elseif (L) fprintf('Valor de a: %f, valor de b = %f\n', a, b); c = a+b; display(c); else c = a+b+4; display(c); end

Exerccio: Fazer um programa que receba do usurio um nmero e em seguida diga se o nmero par ou mpar. Caso no seja um nmero inteiro, imprima mensagem de erro.

Realiza um certo conjunto de comandos numa pr-determinada quantidade de vezes. Forma geral: for x = valor comandos; end

valor : pode ser vetor ou matriz numricos x = vetor: a cada iterao, x receber o valor de cada elemento do vetor. Ciclo termina ao chegar no ltimo elemento. x = matriz: a cada iterao, x receber um vetor coluna, com o valor de cada coluna da matriz. Ciclo termina ao chegar na ltima coluna.

Exemplos: for x = 0:0.1:1 soma = soma + x; end for k = eye(3) display(k); end

Exerccio: Criar um programa que mostre todos os divisores de um nmero recebido do usurio. Criar um programa que diga se o nmero digitado primo ou no.

Repetidamente executa comandos at que o valor da expresso seja falso Forma geral: while (expresso) comandos; end expresso: comparao: a<b, a>b, a==b, a~=b Varivel lgica pr-declarada: L = true
Ps: Parar programa: ctrl+c

Exemplo: while (a<=b) a = a*2; b = b + 1; display(a); display(b); end

Exerccio: Escreva um programa que calcule sucessivamente a raiz quadrada de nmeros introduzidos pelo utilizador at que este indique um nmero igual a 1. Utilize a funo sqrt(x) para calcular a raiz quadrada e input(x=?) para ler os valores. Mostrar ao fim da execuo o nmero de iteraes.

Ferramentas de mudana do fluxo: break encerra o loop while ou for Ex: for k=2:x-1 if (mod(x,k) == 0) break end end continue pula para a prxima iterao Ex: for k = 1:x if (mod(x,k) == 0) fprintf('%.0f, ', k); continue end fprintf('\n'); end

Mecanismo de escolha entre vrias opes, baseado em comparao de igualdade. Executa o primeiro caso em que a comparao satisfeita. Imediatamente aps executar o caso escolhido, o switch encerrado.

Caso nenhum dos casos satisfaa a condio, executado o otherwise.

Forma geral: switch varivel_teste case valor_1 comandos_1; case valor_2 comandos_2; (...) otherwise comandos_n; end

Exemplo: metodo = Bilinear'; switch lower(metodo) case {'linear','bilinear'} display('Mtodo linear.'); case 'cubico' display('Mtodo cbico.'); case 'mais proximo' display('Mtodo por mais prximo.'); otherwise display('Mtodo desconhecido.'); end

Exerccio: criar um programa que, de acordo com a entrada do usurio, escolha entre executar um dos programas criados anteriormente: nmero primo, divisores, par ou mpar. Caso a entrada seja invlida, mostrar mensagem de erro.

Formam outro tipo de arquivo *.m No podem ser declaradas na Command Window Recebem e retornam parmetros Fazem uso de variveis locais prprias S possvel chamar funes que estejam includas na pasta aberta na janela Current Folder

Declarao:
function [sada1, sada2, ...] = nome_funo (ent1, ent2, ...) comandos; end

Utilizao:
[var1 var2 ...] = nome_funo(par1, par2, ...)

sada1, sada2, ... variveis que recebero os valores que sero retornados pela funo ent1, ent2, ... variveis que recebero os parmetros enviados para a funo var1 var2 ... variveis que recebero os valores retornados pela funo par1, par2, ... parmetros enviados para a funo

Exemplo: Criar uma funo que receba o logaritmando e a base e retorne o logaritmo correspondente. function logarit = logbase (logarit, base) a = log(logarit); b = log(base); logarit = a/b;

Exerccios: Criar uma funo para calcular a mdia de n valores. Criar uma funo que encontre o mdc (mximo divisor comum) dentre diversos nmeros. Criar uma funo que encontre o mmc (mnimo mltiplo comum) entre n nmeros.

Faa um script que leia um vetor com as notas de uma turma e que calcule o seguinte: a) Percentagem das notas positivas (> = 80); b) Percentagem das notas negativas (< 40 ); c) Mdia das notas positivas; d) Mdia das notas negativas; e) Mdia geral das notas. Use como vetor de notas: [ 55 75 93 100 86 15 23 39 81 78.5 63 0 84 67 71 10 89 9 72 51.5]

Faa um script que leia um vetor com as notas de uma turma e que calcule o seguinte: a) Percentagem das notas positivas (> = 80); b) Percentagem das notas negativas (< 40 ); c) Mdia das notas positivas; d) Mdia das notas negativas; e) Mdia geral das notas. Use como vetor de notas: [ 55 75 93 100 86 15 23 39 81 78.5 63 0 84 67 71 10 89 9 72 51.5]

plot(a, b) desenha um grfico 2D com os vetores a e b, de mesmo tamanho, associando cada par de elementos de mesmo endereo a um ponto do grfico. plot(x1, y1, x2, y2, ...) desenha vrias linhas no mesmo grfico Show plot tools and dock figures ferramenta de edio do grfico desenhado

Exemplo: x = -2:0.01:2; y = x.^2; plot(x, y);

Exemplo: x = -pi:0.01:pi; y1 = sin(x); y2 = cos(x); plot(x, y1 ,x , y2)

x=1:1000; for k=1:5 y(k,:)=k*log(x); end plot(x,y)

Clculos realizados apenas com smbolos matemticos Possibilidade de utilizar funes como diff(derivada), int(integral), fourier(transformada de fourier), etc syms x cria uma varivel simblica x X = sym( *a,b;c,d+) cria uma matriz simblica X contendo as variveis simblicas a, b, c, d

Exemplo: syms x; x = x^2; y = int(x); y = int(x,1,3); y = diff(x);

% y = x^3/3 % y = 26/3 % y = 2*x

Exemplo: M = sym(*a,b;c,d+); M2 = 2*M; [ 2*a, 2*b] [ 2*c, 2*d] d = det(M2); 4*a*d - 4*b*c

Capazes de armazenar a maioria das estruturas conhecidas no MATLAB em uma nica varivel: - nmeros - caracteres - strings - matrizes numricas - matrizes de caracteres til para organizar e armazenar estruturas de diferentes tipos. Facilidade de manipular strings.

Declarao: A = { ... } , separa colunas ; separa linhas Manipulao: A(x,y) = (...) - acessar linha x, coluna y Ps: ferramentas de acesso de elementos funciona semelhante ao de matrizes normais.