Introdução ao Matlab

Aula introdutória sobre uso do Matrlab (para iniciantes)

Uma ver aberto o Matlab, na sua janela de comandos ("Command Window"), digitar os seguintes comandos:

O comando abaixo só funciona no Windows e permite ao usuário perceber a forma como o Matlab está usando a RAM de seu computador:

Iniciando as primeiras operações com o Matlab:

Obs.: o caracter % funciona como um comentário para o Matlab. As declarações que precedem este caracter são ignoradas pelo Matlab.

Atribuições simples

Declarando matrizes

Obs.: Note que para o Matlab, qualquer variável é uma matriz, mesmo que com dimensão , e note que todas as partes numéricas das variáveis são consideradas com máxima precisão ("double").

Operações com Matrizes

Note: que anteriormente foi feito:

Continuando...

Sobre multiplicações de matrizes:

Note: No comando anterior se tentou realizar . O Matlab interpretou este comando como sendo:

para um usuário iniciante do Matlab, pode parecer um simples cálculo de multiplicação, mas lembrar que o Matlab considera qualquer variável como sendo uma matriz de -linhas por -colunas, mesmo que sendo (variáveis escalares).

Então na última declaração, para o Matlab, o usuário tentou fazer:

Note que as dimensões internas das matrizes e são diferentes, o que realmente não permite que estas matrizes sejam multiplicadas desta forma.

Este problema pode ser resolvido se for feito algo como:

onde corresponde à transposta da matriz .

Neste caso, estaríamos fazendo (corretamente):

Verificando:

Trabalhando com números aleatórios

Criando vetores

Vamos supor que queremos gerar um gráfico temporal de uma função do tipo senoide amortecida exponencialmente:

onde: amplitude máxima (de pico) da senóide; fator de amortecimento da senóide; Frequência angular (rad/s) da senóide.

Lembrar que , onde frequência em Hz.

Poderíamos criar um vetor variando dentro de certo intervalo de tempo e depois usar a equação anterior para calcular um vetor de pontos .

Estamos querendo gerar uma senóide amortecida com (um valor baixo == lento) de frequência igual à 1 Hz.

Mas...

⚠️ Erro associado com multiplicação de matrizes, semelhante ao já gerado anteriormente, mas neste caso...

Note que quando realizamos qualquer operação aritmética envolvendo com uma matriz (ou vetor), o resultado será uma nova matriz (ou vetor).

Então, realizar a parte , que envolve o vetor , vai acabar gerando um vetor também de dimensão .

Note que o caso da declaração:

envolve a multiplicação de 2 vetores/matrizes:

ou seja, realmente não há como multiplicar as 2 partes internas da expressão.

Mas podemos tentar solucionar este problema usando multiplicação ponto-à-ponto entre elementos de um vetor, usando o operador .*, mas mesmo assim:

Confirma que o erro está associado com a multiplicação entre as 2 partes internas da expressão. O operador .* deve estar localizado entre estas 2 partes:

O seguinte gráfico deve ter sido gerado:

plot1.png

Visualizando dados parciais de uma matriz

Os vetores e gerados antes são grandes.

Suponha que você queria verificar o conteúdo de parte deles, digamos, os primeiros 10 elementos de cada um. Podemos fazer algo do tipo:

Note que ans é a variável que o Matlab sempre cria quando realiza um cálculo para o qual o usuário não atribuiu explicitamente uma variável de retorno. No caso, note que ans == answer (resposta em inglês).

No caso anterior, o resultado visual parece uma tabela, mas note que na realizade, o Matlab criou uma matriz contendo 10 linhas 2 colunas.

Note que o caracter [ indica o início da declaração de um vetor ou matriz. O caracter ] indica o fim deste vetor ou matriz. Mudanças de linha são indicadas pelo carater ;. Para separar os elementos de uma matriz ou vetor dentro da mesma linha, usar espaço em branco, ou caracter <TAB> ou ,. E se eventualmente a declaração de certa linha ultrapassar muitas colunas na tela, usar os caracteres ... e teclar <ENTER> (ou <RETURN>) para indicar mudança de linha, sem inidicar fim de uma declaração.

Então no caso anterior, acabamos por deliberadamente criar uma matriz de linhas colunas, onde a primeira coluna era formada pela transposta do primeiros 10 elementos do vetor . Como este vetor é grande, "separamos" a parte desejada, indicando o intervalo desejado de dados usando o operador :. Neste caso, explicitamente, separamos apenas os elementos da 1a-linha, colunas de 1 até 10. E realizamos uma transposta deste resultado, gerando um "vetor linha", neste caso, contendo 10 linhas. Mas no caso anterior, acrescentamos à definição da "nova" matriz "ans", uma segundo coluna formada pela transposta do vetor , neste caso, também indicando que queríamos separar apenas os 10 primeiros elementos deste vetor (colunas de 1 até 10, linha = 1). O Matlab acabou gerando então uma matriz "ans" e mostrando a mesma na tela. O resultado visualmente parece uma tabela.

Gráficos Iniciais no Matlab

Gerando gráficos simples usando Matlab...

Função fplot()

Já usamos este comando antes. Mas esta não é a única forma de mostrar um gráfico de certa função matemática. Podemos usar a função fplot():

Voltando ao caso da nossa expressão anterior (a senoide amortecida exponecialmente)...

O comando fplot() anteiror deve ter gerado um gráfico como:

plot2.png

Plotando 2 curvas no mesmo gráfico

Desta vez deve ter sido gerado um gráfico como:

plot3

Uso do Matlab em Controle

Declarando uma função transferência

Suponha que se queira criar uma variável G para a função transferência:

Os seguintes gráficos devem ter sido gerados:

step(G)pzmap(G)
step_G.pngpzmap_G.png
step(BoG)pzmap(BoG)
step_BoG.pngpzmap_BoG.png

Fim.


(Onedark theme) Fernando Passold, em 25/03/2024