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.
''
%%
\\ \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.
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
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.
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
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: 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.