









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
Os melhores documentos à venda: Trabalhos de alunos formados
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
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
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);