









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Ensina os comandos do matlab
Tipologia: Notas de estudo
1 / 15
Esta página não é visível na pré-visualização
Não perca as partes importantes!










!dir Visualiza o diretório corrente !format a: Formata um disquete na unidade A !copy arquivo a: Copia um arquivo para o disquete !ren arq1 arq2 Muda o nome do arquivo arq1 para arq !del arquivo Apaga o arquivo !md pasta Cria um subdiretório chamado pasta
ans =
ans = 2
sqrt(4) + 1
ans = 3
exp(0) ans = 1
ans = 1 2
pi ans =
log(1) ans = 0
abs(-pi) ans =
x = 2^ x = 8
i ans = 0 + 1.0000i y = x + 2 y = 10
1 + i ans = 1.0000 + 1.0000i y y = 10
ans = 1 4
i^ ans = -1.0000 + 0.0000i
A = [1 2 3] A =
1 2 3
ans = 1 2 3
s = 1 - 1/2 + 1/3 - ... 1/4 + 1/5 - 1/6 + ... 1/7 - 1/8 + 1/9 - 1/ s =
9.63754 1.60210E-2 6.02252e
x = 1.3333 0.
Transposição
A = [1 2 3;4 5 6;7 8 0] A =
1 2 3 4 5 6 7 8 0
Adição e subtração
A A = 1 2 3 4 5 6 7 8 0
Multiplicação
A*B ans = 14 32 23 32 77 68 23 68 113 B = A' B = 1 4 7 2 5 8 3 6 0
b = Ax b = 5 !del arquivo Apaga o arquivo >> !md pasta Cria um subdiretório chamado pasta ## ELEMENTOS BÁSICOS ## Operações aritméticas (exemplos): ans = 23. ### >> A(2) ans = 2 >> sqrt(4) + 1 ans = 3 >> exp(0) ans = 1 ### >> A(1:2) ans = 1 2 >> pi ans = 3. >> log(1) ans = 0 ### >> A = [1 2 3;4 5 6] ### A = >> abs(-pi) ans = 3. >> x = 2^ x = 8 ### >> A = [1 2 3 ### 4 5 6] ### A = >> i ans = 0 + 1.0000i >> y = x + 2 y = 10 >> 1 + i ans = 1.0000 + 1.0000i >> y y = 10 ### >> A(:,1) ans = 1 4 >> i^ ans = -1.0000 + 0.0000i >> A = [1 2 3] A = 1 2 3 ### >> A(1,:) ans = 1 2 3 >> s = 1 - 1/2 + 1/3 - ... 1/4 + 1/5 - 1/6 + ... 1/7 - 1/8 + 1/9 - 1/ s = 0. ## Operadores aritméticos: ## + adição - subtração ## * multiplicação ## / divisão a direita ## \ divisão a esquerda ## ^ potenciação ## Observação: 1/4 = 4\1 (= 0,25) ## Exemplos de formatos de entrada de números: 9.63754 1.60210E-2 6.02252e ## Formatos de saída de números: ## Formato padrão de saída (format short) ## Exemplo: >> x = [4/3 1.234e-6] x = 1.3333 0. ## CÁLCULO MATRICIAL Transposição >> A = [1 2 3;4 5 6;7 8 0] A = 1 2 3 4 5 6 7 8 0 Adição e subtração >> A A = 1 2 3 4 5 6 7 8 0 Multiplicação >> AB ans = 14 32 23 32 77 68 23 68 113 >> B = A' B = 1 4 7 2 5 8 3 6 0 ### >> B ### B = >> b = A*x b = 5 8
x = [-1 0 2]' x =
0 2
pi*x ans = -3. 0
x' ans = -1 0 2
ans = -2 -14 - 2 -10 - 6 -6 0
x*x'
ans = 1 0 - 0 0 0 -2 0 4
x x =
x'*x ans = 5
y = x – 1 y =
A*z
ans = 5 8
S = y/x i^ ans = -1.0000 + 0.0000i >> A = [1 2 3] A = 1 2 3 ### >> A(1,:) ans = 1 2 3 >> s = 1 - 1/2 + 1/3 - ... 1/4 + 1/5 - 1/6 + ... 1/7 - 1/8 + 1/9 - 1/ s = 0. ## Operadores aritméticos: ## + adição - subtração ## * multiplicação ## / divisão a direita ## \ divisão a esquerda ## ^ potenciação ## Observação: 1/4 = 4\1 (= 0,25) ## Exemplos de formatos de entrada de números: 9.63754 1.60210E-2 6.02252e ## Formatos de saída de números: ## Formato padrão de saída (format short) ## Exemplo: >> x = [4/3 1.234e-6] x = 1.3333 0. ## CÁLCULO MATRICIAL Transposição >> A = [1 2 3;4 5 6;7 8 0] A = 1 2 3 4 5 6 7 8 0 Adição e subtração >> A A = 1 2 3 4 5 6 7 8 0 Multiplicação >> AB ans = 14 32 23 32 77 68 23 68 113 >> B = A' B = 1 4 7 2 5 8 3 6 0 ### >> B ### B = >> b = Ax b = 5 8 - >> x = [-1 0 2]' x = - 0 2 ### >> C = A + B ### C = >> pix ans = -3. 0 6. >> x' ans = -1 0 2 ### >> D = C – B ### D = ### >> 3A - 5B ans = -2 -14 - 2 -10 - 6 -6 0 >> xx' ans = 1 0 - 0 0 0 -2 0 4 >> x x = - 0 2 >> x'x ans = 5 >> y = x – 1 y = - - 1 ## Divisão de matrizes ## Divisão à esquerda: X = A\B é a solução de AX = B, pois X = A-1B ## Divisão à direita: X = B/A é a solução de XA = B, pois X = BA- ## Exemplos: ### >> A ### A = >> Az ans = 5 8 - >> S = y/x S = 0 0 -1. 0 0 -0. 0 0 0. det(A) ans = 27
x x =
ans = 0 0 -0. 0 0 -0. 0 0 0.
b b =
5 8
y y =
ans = 0 0 -0. 0 0 -0. 0 0 0.
z = A\b z =
s = x\y s =
>> who
Your variables are:
S ans s x y
>> whos
Name Size Bytes Class S 3x3 72 double array ans 3x3 72 double array s 1x1 8 double array x 3x1 24 double array y 3x1 24 double array
Grand total is 25 elements using 200 bytes
x = [1 2 3]; y = [4 5 6];
z = x.*y
z =
4 10 18
z = x.\y
z =
4.0000 2.5000 2.
b = A(:) b = 1 4 7 2
A(:,[2,3]) = zeros(3,2) A = 1 0 0 4 0 0 7 0 0
diag(1:4) ans = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4
diag(A) ans = 1 5 9
3*ones(3) ans = 3 3 3 3 3 3 3 3 3
diag(1:4,1) ans = 0 1 0 0 0 0 0 2 0 0
diag(A,-1) ans = 4 8
eye(2,3) ans = 1 0 0 0 1 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0
diag(A,2) ans = 3
eye(3) ans = 1 0 0 diag([1 -1 -8]) ans = 1 0 0 0 -1 0 0 0 -
zeros(2,3) ans = 0 0 0 0 0 0
zeros(2) ans = 0 0 0 0
-1*eye(3) ans = -1 0 0 0 -1 0 0 0 -
rand(4,3) ans = 0.2190 0.9347 0. 0.0470 0.3835 0.
0.6789 0.5194 0. 0.6793 0.8310 0.
rand(4,3) ans = 0.0077 0.6868 0. 0.3834 0.5890 0. 0.0668 0.9304 0. 0.4175 0.8462 0.
ones(3) ans = 1 1 1 1 1 1 1 1 1
C = [A eye(2);ones(2) A^2] C = 1 2 1 0 3 4 0 1 1 1 7 10 1 1 15 22
size(C) ans =
z = x.y z = 4 10 18 >> z = x.\y z = 4.0000 2.5000 2. ## Manipulação de matrizes: ### >> A = [1 2 3;4 5 6;7 8 ### 9] ### A = >> b = A(:) b = 1 4 7 2 ### >> A(:) = 1: ### A = ### >> A(3,3)=A(1,3)+A(3,1) ### A = >> A(:,[2,3]) = zeros(3,2) A = 1 0 0 4 0 0 7 0 0 ## Matriz vazia: x = [ ] ## Exemplo de remoção de linhas e colunas de uma matriz: ### >> A(:) = 1: ### A = ### >> A(:,[2 3])=[] ### A = ## Exemplos: >> diag(1:4) ans = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 >> diag(A) ans = 1 5 9 >> 3ones(3) ans = 3 3 3 3 3 3 3 3 3 >> diag(1:4,1) ans = 0 1 0 0 0 0 0 2 0 0 >> diag(A,-1) ans = 4 8 >> eye(2,3) ans = 1 0 0 0 1 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0 >> diag(A,2) ans = 3 >> eye(3) ans = 1 0 0 >> diag([1 -1 -8]) ans = 1 0 0 0 -1 0 0 0 - >> zeros(2,3) ans = 0 0 0 0 0 0 ### >> A = [1 2 3;4 5 6;7 8 9] ### A = >> zeros(2) ans = 0 0 0 0 >> -1*eye(3) ans = -1 0 0 0 -1 0 0 0 - >> rand(4,3) ans = 0.2190 0.9347 0. 0.0470 0.3835 0. 0.6789 0.5194 0. 0.6793 0.8310 0. >> rand(4,3) ans = 0.0077 0.6868 0. 0.3834 0.5890 0. 0.0668 0.9304 0. 0.4175 0.8462 0. >> ones(3) ans = 1 1 1 1 1 1 1 1 1 ## Construção de matrizes a partir de outras matrizes. ## Exemplos: ### >> A = [1 2;3 4] ### A = >> C = [A eye(2);ones(2) A^2] C = 1 2 1 0 3 4 0 1 1 1 7 10 1 1 15 22 >> size(C) ans = 4 4
Um dos recursos mais utilizados no Matlab é a sua capacidade de geração de gráficos em duas (2D) e três dimensões (3D), concomitante ou após o cálculo numérico. O comando para desenhar gráficos x-y 2D é plot(x,y), no qual x e y são vetores contendo os valores das variáveis x (eixo horizontal) e y (eixo vertical).
Exemplo: Desenho de uma função senoidal com amplitude unitária, freqüência de 1000 Hz e ângulo de fase igual a zero.
A = 1; f = 1000; p = 0; T = 1/f; t = 0:T/100:5T; s = Asin(2pif*t + p); plot(t,s); grid; title('Onda senoidal'); xlabel('Tempo (s)'); ylabel('Tensao (V)');
O Matlab pode ser também utilizado como linguagem de programação com uma construção sintático semelhante à linguagem C. Ela possui declarações como laços, testes e desvios condicionais, manipulação de arquivos e objetos gráficos. Os programas são criados como scripts “m-files”.
Laços e Testes Conditionais
O Matlab tem os testes condicionais padrões if-elseif-else. Por exemplo:
t = rand(1); if t > 0. s = 0; elseif t < 0. s = 1; else s = 1-2*(t-0.25); end s s = 0 t t =
while 1+x > 1 x = x/2; end x x = 1.1102e-
Seleção de Casos (Switch)
O comando switch é utilizado quando desejamos selecionar (chavear) condicionalmente expressões porém, na forma de lista. O formato geral do comando switch é:
SWITCH expr CASE caso1, declaração, ..., declaração CASE {expr_caso1, expr_caso2, expr_caso_3,...} declaração, ..., declaração ... OTHERWISE, declaração, ..., declaração END
As declarações que seguem o primeiro CASE que corresponde à condição dada por expr são
executadas. Quando uma expressão é um vetor (como no segundo CASE acima), basta um caso_expr concordar com o expr da instrução switch. Se nenhum dos CASEs concordar com o expr do switch, então o caso OTHERWISE é executado (se existir). Apenas um CASE é executado e a seqüência de execução do programa prossegue após o END. Apenas as instruções entre o CASE
concordante e o próximo CASE, OTHERWISE ou END são executadas. Diferentemente da linguagem C, a instrução SWITCH não executa o CASE seqüencialmente (de modo que não há necessidade da instrução BREAK).
switch ajuste(METODO) case 'linear' disp('Ajuste linear') case 'exponencial' disp('Ajuste exponencial') case 'potencial' disp('Ajuste potencial') otherwise disp('Ajuste desconhecido') end
Scripts e Funções
O script (também chamado de arquivo m ou m-file ) é uma coleção de comandos Matlab escrito em arquivo texto cujo nome termina com a extensão “.m”. Digitando-se o nome do arquivo m sem a extensão na área de trabalho do Matlab faz com que os comandos descritos nele sejam executados sequencialmente no Matlab. Para isso, é necessário que o arquivo m esteja em um subdiretório listado no caminho (path) do ambiente Matlab. Por exemplo, suponha que o arquivo plotseno.m contenha as seguintes linhas:
x = 0:2pi/N:2pi; y = sin(h*x); plot(x,y)
Então, a seqüência de comandos na área de trabalho do Matlab:
N = 100; h = 5; plotseno
gerará a Figura 1.
Fig. 1 – Resultado da execução do arquivo m plotseno
Como este exemplo mostrou, os comandos no script pode se referir a variáveis já definidas na área de trabalho do Matlab (as variáveis N e h chamadas em plotseno.m). Além dos scripts, as Funções são um tipo de arquivo m que permitem ao usuário criar novos comandos do Matlab. Uma função é definida como um arquivo m que começa com um cabeçalho na seguinte forma:
function [saida1, saida2,...] = nome_funcao(var1, var2,...)
O restante do arquivo m consiste de comandos do Matlab que utilizam os valores das variáveis var1, var2, etc., para calcular o valor das variáveis saida1, saida2, etc. É importante observar que quando uma função é chamada, o Matlab cria um espaço de trabalho separado das variáveis da área de trabalho. Dessa forma, os comandos na função não podem se referir às variáveis (interativas) da área de trabalho, a menos que elas sejam passadas como argumentos da função (no lugar das variáveis var1, var2, etc.). Inversamente, as variáveis criadas dentro da função são apagadas quando a execução da função é terminada, exceto se elas forem passadas como argumentos de saída da função (variáveis saida1, saida2, etc.).
Um exemplo de uma função que calcula f(x) = sin(x^2 ). Os comandos são gravados no arquivo fcn.m (o nome da função no Matlab é o nome do arquivo m sem extensão).
function y = fcn(x) y = sin(x.^2);
(Observe o operador escalar .^ de modo que a função fcn retorna um vetor de mesma dimensão
da variável x). Com esta função definida, podemos usar fcn como se fosse uma função intrínseca do Matlab:
x = (-pi:2*pi/100:pi)'; y = sin(x); z = fcn(x); plot(x,y,x,z) grid
O gráfico mostrado na Fig. 2 é o resultado do cálculo das função intrínseca do Matlab sin(x) e da função personalizada fcn(x). Observe o uso do comando grid para desenhar uma grade pontilhada no gráfico.
function c = bissecao(fn,a,b,tol)
% c = bissecao('fn',a,b,tol) % % Esta funcao calcula a raiz da funcao fn no intervalo [a,b] % com tolerancia tol. Admite-se que a funcao tenha uma única raiz % no intervalo [a,b].
% Avalia a funcao nos extremos e verifica se o sinal muda fa = feval(fn,a); fb = feval(fn,b);
if fa*fb >= 0 error('A funcao deve ter sinais opostos em a e b') end
% A variavel OK e usada para sinalizar que o valor da raiz foi obtido % antes de comecar o metodo. OK = 0;
% Divide o intervalo pela metade c = (a+b)/2;
% Laco principal while abs(a-b) > 2tol & ~OK % Observe o caractere de negacao ~ % Avalia a funcao no valor medio fc = feval(fn,c); if fafc < 0 % A raiz esta a esquerda de c b = c; fb = fc; c = (a+b)/2; elseif fc*fb < 0 % A raiz esta a direita de c a = c; fa = fc; c = (a+b)/2; else % Chegamos na raiz OK = 1; end end
Considerando que o nome do arquivo m é bissecao.m, ele pode ser executado como:
x = bissecao('fcn',1,2,1e-6) x =
erro = sqrt(pi)-x erro = -4.1087e-
Podemos criar não somente novos comandos no Matlab usando arquivos m, mas também um sistema de ajuda ( help ) automático, colocando as linhas de comentário (%) no cabeçalho do arquivo m. O comando help imprimirá as linhas de comentário do cabeçalho do arquivo m:
help bissecao
% c = bissecao('fn',a,b,tol) % % Esta funcao calcula a raiz da funcao fn no intervalo [a,b] % com tolerancia tol. Admite-se que a funcao tenha uma única raiz % no intervalo [a,b].
Observe que o nome da funcao 'fn' foi colocada entre apóstrofos no argumento da função bissecao.m. Na verdade, a variável fn já é uma variável texto, não necessitando estar delimitada
por apóstrofos. O uso dos apóstrofos é um lembrete para que a variável seja passada como variável texto no ambiente de trabalho do Matlab. Observe também o uso da função error no início do programa. Esta função intrínseca do Matlab exibe o texto passado como seu argumento e encerra a execução do programa.
Manipulação de Arquivos
A manipulação de arquivos na área de trabalho do Matlab normalmente é realizada pelos comandos save e load. Em programas, o Matlab possui comandos equivalentes aos da linguagem C. (fopen, fclose, fprintf e fscanf). Para abrir um arquivo de leitura (entrada de dados), utilize o seguinte comando:
fid = fopen('arquivo.dat','r')
no qual id é uma variável inteira que contém o endereço lógico do arquivo de leitura ('r') 'arquivo.dat'. Para ler os dados, utiliza-se o comando fscanf. Supondo que o arquivo de dados contenha uma coluna de valores no formato real; eles serão lidos de forma seqüencial pelo comando:
x = fscanf(fid, '%f');
Terminada a leitura dos dados do arquivo fecha-se o arquivo com o comando:
fclose(fid);
Para gravar um arquivo de dados, emprega-se a seguinte seqüência de comandos:
fid = fopen('arquivo_gravacao.dat','w'); fprintf(fid, '%f', x);
Observe que o status do arquivo_gravacao.dat é de escrita (gravação) ('w' - write ). Ao terminar a leitura dos dados ou quando precisar ler novamente os dados, fecha-se o arquivo com o mesmo comando visto anteriormente:
fclose(fid);