Matlab - Uma Introdução | Matlab | Matriz (Matemática)
SalvarSalvar Matlab - Uma Introdução para ler mais tarde
Aula 01_MATRIZES
Motivação - Este curso tem por objetivo a familiarização com pacote matemático "MATLAB" e "SciLab". Este último é agora apresentado por ser de domínio público, e portanto, não ter custo associado à aquisição. As operações básicas são mostradas, bem como os comandos de programas, gráficos e "toolboxes". Alguns exemplos e exercícios são mostrados. Todavia, muito embora o SciLab disponha de pacote equivalente ao "Simulink", o mesmo não é explorado aqui, sendo mostrado apenas para "Matlab".
Para a instalação do Matlab, basta seguir as instruções do CD de instalação, enquanto que o SciLab é obtido diretamente na internet. A instalação de ambos é bastante simples.
CAPÍTULO 2 - Operações Básicas
Os comandos a seguir são válidos para ambos os pacotes computacionais Matlab e SciLab. Quando alguma diferença ocorrer, a mesma será enfatizada.
A representação de um número complexo em MATLAB pode ser feita através de qualquer uma das formas abaixo:
a = 2 + i*6
a = 2 + j*6
Em SciLab a representação é a mesma, muito embora a variável complexa tenha que ser definida:
i ou j = sqrt(-1)
As versões atuais do Matlab trabalham de forma ainda mais simplificada, permitindo escrever:
a = 2 +6i
Se for de interesse trabalhar com a parte real do número "a", usa-se o comando:
b = real (a)
Com resposta dada pelo programa
Da mesma forma, se a parte imaginária for de interesse, usa-se:
c = imag (a)
Com resposta dada por c = 6 Para o número complexo dado acima ser representado na forma polar, usa-se o comando:
d = abs(a)
Com resposta dada por d = 6.3246, que é o mesmo que fase em Matlab será dado por:
e = angle (a)
4  36 . O ângulo de
Com resposta em radianos dada por e = 1.2490, que é o mesmo que atang (6/2). Esta função também existe em Matlab e SciLab.
1. Note que para cada nova variável de interesse, foi associada uma letra qualquer. Aqui vai a primeira diferença do pacote em relação a FORTRAN, por exemplo. Esta diferença reside no fato de não se precisar declarar variáveis nem obedecer nenhuma hierarquia para tornar uma variável real ou inteira.
2. Da nota acima, segue uma importante observação relativa à representação de números complexos: As variáveis "i" e "j" podem, portanto, assumir qualquer valor. Desta forma, se "i" for especificado como 2, por exemplo, ao se escrever
teremos como resposta a = 14. Logo, ao se representar números complexos, deve-se ter certeza de que "i" e "j" não estão previamente definidos.
3. Quando escrevemos a = 2 + i*6, obtemos na tela
2.0 + 6.0000i
Logo, o programa repete a informação ou processamento executado. Se isto se tornar inconveniente (muita informação na tela durante o processamento), pode se escrever
a = 2 + i*6 ;
O símbolo ";" colocado ao fim da expressão informa ao programa que não é necessário reproduzir tal informação na tela.
A representação clássica de vetores (ordem n x 1) é obtida da seguinte maneira:
» A = [1
Note que no caso acima não foi usado o símbolo ";", e por este motivo o programa devolveu o vetor "A". Matlab e SciLab permitem criar diretamente um vetor com elementos iguais a um ou zero da seguinte forma:
A = ones(3,1)
» A = zeros(3,1)
Estes vetores podem se mostrar extremamente úteis em determinadas situações. Operações com vetores serão mostradas adiante.
Matrizes podem ser representadas de duas formas, como mostrado a seguir:
Uma vez que o símbolo ";" não foi usado, o programa responde:
Ou da forma direta:
» A = [1 2 3
Em ambos os casos, tem-se a mesma matriz.
Assuma os vetores
Algumas operações serão mostradas:
Acha-se a norma de um vetor através do comando
Com resposta dada por
= norm (A)
onde w representa a norma euclidiana do vetor A Outros tipos de norma podem ser identificados. De maior importância, destaca-se a norma infinita, dada por
norm(A, inf) = max (abs (A)). norm(A, -inf) = min( abs (A)).
Pode-se também achar a norma de um vetor que seja combinação de dois outros vetores, como por exemplo:
f = norm (A+B)
f = 15.1658
Note que neste caso, MATLAB computou internamente o vetor A+B e forneceu a resposta pedida.
multiplicação de dois vetores, a menos que se
transponha um deles. Entretanto, MATLAB fornece uma opção de se multiplicar, ou elevar a alguma potência, cada membro de um vetor ou uma matriz, da seguinte forma:
Sabe-se que não é possível a
A multiplicação, elemento por elemento, é dada pelo símbolo ".*". Desta forma, pode-se ter:
Que é igual ao produto de cada elemento do vetor A por cada elemento do vetor B. Da mesma forma, para elevar cada componente do vetor A a uma potência (lembre que não é possível elevar um vetor ao quadrado, por exemplo), usa-se o símbolo ".^". Desta forma:
D = A .^2
Uma vez mais, manipulações com vetores poderiam ser incluídas, como mostrado a seguir:
G = (A+B).^2
Produtório e somatório dos termos
Obtidos através dos comandos
h = sum (A)
2.3.2 Matrizes
Assuma as matrizes
k = prod (A)
Diversas operações podem então ser mostradas.
Como as matrizes têm dimensões coerentes, podem ser somadas, subtraídas ou multiplicadas entre si.
Adição e subtração são comandos bem simples, como mostrado
» D = A-B
A multiplicação de matrizes é obtida através do comando "*". Note que neste caso, tem-se uma operação diferente daquela obtida quando o símbolo ".*" é usado. Portanto:
» F = A .*B
Obtida da mesma forma daquela mostrada para vetores
g = norm (A)
g = 15.6614
OBS: Manipulações internas são novamente válidas.
Obtido através de
h = rank (A)
Em Matlab, dados pelo comando
[ u v] = eig (A)
0.8144]
-6.5616]
Das matrizes acima, v representa a matriz de autovalores, enquanto u representa a matriz de autovetores. A mesma resposta acima é obtia em SciLab em resposta ao seguinte comando:
[ u v] = spec (A)
Obtidos, desta vez pelo mesmo comando para os dois pacotes como:
l = svd (A)
2.3604]
Obtido através do comando
m = det (A)
Que é igual ao produtório da matriz diagonal v, obtida através do comando
n = prod (diag(v))
o = cond (A)
Com resultado dado por
Inversa de matrizes
o = 6.6351
Assuma o produto p = A*B -1 . A solução, em MATLAB, pode ser obtida através
a) P = A*inv(B)
-0.3617 2.0851 0.4681 1.9787 -2.9362 0.8511 ]
Entretanto, para matrizes de grande porte, achar a inversa de b pode ser computacionalmente ineficiente. Uma alternativa, entre outras, pode ser utilizada.
Com solução idêntica a mostrada acima. Através desta operação, o resultado é obtido diretamente, sem necessidade de inversa. Tem-se, para a solução de um sistema do tipo Ax = b, tomando b como um vetor.
= A\b é solução de Ax = b
= inv(A)*b
que fornecem a mesma resposta
segunda acha a resposta através da inversa explícita da matriz A.
A primeira opção fatora a matriz A, enquanto que a
Obtida através do comando
Obtendo como resultado as matrizes triangular inferior L e superior U
Mudando a dimensão de uma matriz
Assuma que se queira mudar a dimensão da matriz a de 3x3 para 1x9. Isto pode ser feito através do comando:
Q = reshape(A,[1 9])
Este comando não existe em SciLab.
Obtido através do símbolo "'". Assim, para se achar a transposta de a, usa-se:
Manipulações com matrizes
Uma importante característica de MATLAB refere-se a facilidade com que se pode manusear matrizes. Alguns exemplos serão dados. Um elemento qualquer de uma
matriz a pode ser identificado como A(i, j), onde i e j são os componentes que identificam
Para se referir a todas as linhas ou colunas
de uma matriz usa-se o símbolo ":'. Desta forma, alguns exemplos podem ser mostrados,
tomando novamente as matrizes A e B . Se for de interesse formar um vetor com a segunda coluna matriz A, usa-se:
a linha e a coluna associadas ao componente
r = A (: , 2)
Da mesma forma, se fosse de interesse formar um vetor transposto a partir da segunda linha da matriz A:
s = A (2, : )
É possível também criar um vetor com alguns elementos da matriz. Por exemplo, pode-se criar um vetor com alguns componentes de linha ou coluna, como por exemplo, criar um vetor com os dois primeiros componentes de segunda coluna de ª
t = A (1:2 , 2)
Estas propriedades são muito importantes, uma vez que possibilitam a manipulação de matrizes nas mais variadas formas. Pode-se também criar uma nova matriz a partir de uma já existente. Assuma que se queira criar uma matriz x a partir da matriz ª Entretanto, as linhas e colunas 2 e 3 da matriz x correspondem às linhas e colunas 3 e 2 da matriz a . Desta forma:
Cria uma matriz x idêntica a a . Note o símbolo ";", indicando que a matriz x não deve aparecer na tela.
x([2 3],:)=A([3 2],:)
A operação acima trocou as segunda e terceira linhas, mas manteve as colunas idênticas às colunas da matriz A Para esta última operação, tem-se:
x(:,[2 3])=A(:,[3 2])
Finalmente a matriz desejada é obtida. Poderia-se também acrescentar novos elementos à matriz A, através de operações ou simples inserção de componentes:
Exemplo de inserção simples:
A(4,2)=1
A inserção do elemento criou uma nova linha com elementos nulos, exceto o componente 1 relativo à posição (4, 2).
Exemplo de inserção através de operação:
A (4,2) = A (1,1) + A (3,3)
um novo elemento, função de outros elementos da matriz, foi
acrescentado, alterando a dimensão da matriz.
MATLAB trabalha com matrizes esparsas. Uma matriz pode ser armazenada na forma esparsa, na forma (i,j)=comp, onde i e j são as colunas do elemento comp, ou podem ser transformadas em esparsas a partir de uma matriz previamente fornecida na forma densa. Cada um dos casos é mostrado abaixo:
Montando uma matriz genérica:
A(1,1)=2;
» A(2,3)=4;
» A(3,2)=8;
que é uma matriz na forma densa. Portanto, para criar uma matriz esparsa, usa-se o comando:
e a matriz acima se tornaria
A = sparse (A)
Onde apenas os elementos diferentes de zero aparecem. Portanto, para gerar a matriz acima na forma esparsa, usa-se os comandos:
» A(1,1)=2;
Para gerar matrizes aleatórias, basta dar o comando
que MATLAB automaticamente cria uma matriz de valores aleatórios de dimensão 3x3. No caso deste exemplo, o programa devolveu:
0.7012 0.2625
0.3282]
Criar duas matrizes aleatórias A(4,3) e B(3,4). Achar C=A*B. Achar rank, norma, autovalores e determinante de C. Achar sua transposta. Criar um vetor aleatório e(4,1) e resolver
C x = e
= e Resolver através da inversa, fatoração LU e sinais lógicos \ e /.
CAPÍTULO 3 - Gráficos em duas e três dimensões
Assuma os dois vetores x e y relacionados entre si.
x = [1 2 3 4 5] T
y = [2 4 6 8 10] T
Quer-se representar a relação entre ambos através de um gráfico. comando:
Para isto usa-se o
No comando acima x e y são os vetores a serem plotados. O seguinte gráfico é obtido
Note entretanto que a figura está sem título, legenda no eixos x e y e anotações referentes à curva. Estes podem ser diretamente obtidos através da edição da figura, disponível em ambos os pacotes. Todavia, pode-se fazer as modificações no console, conforme mostrado a seguir:
title('gráfico exemplo para turma CESE') xlabel('eixo x') ylabel('eixo y')
Portanto, title é o comando que dá título à curva, enquanto xlabel e ylabel definem as legendas dos eixos x e y, respectivamente. Para inserir anotação dentro do gráfico, usa-se, somente em Matlab
gtext('grafico x-y')
E o novo gráfico é mostrado:
Se ao invés da linha cheia obtida no gráfico, fosse preferível outro tipo de linha, como asteriscos, por exemplo, usaria-se:
plot (x, y, '*')
tipos e cores de linhas podem ser obtidos. Abaixo são mostrados os
Ponto com traço tracejada
Note que o gráfico gerado em MATLAB foi importado por um editor de textos (word) diretamente. Para que isto ocorra é necessário que se exporteo gráfico obtido através do comando print. Algumas opções são mostradas abaixo:
- PostScript for black and white printers
- PostScript for color printers
- Encapsulated PostScript (EPSF)
-depsc - Encapsulated Color PostScript (EPSF)
- Older color PCX file format (EGA/VGA, 16-color)
- Newer color PCX file format (256-color)
-dbitmap - Send figure to clipboard in bitmap format
Gráfico em 3 dimensões
Assuma que em adição aos vetores x e y, tenha-se o vetor z:
z=[3 5 7 8 2] T
Para obter um gráfico que relacione x, y e z, usa-se , em Matlab, o comando:
O equivalente em SciLab é dado por:
Plot3d (x,y,z)
Note que das opções mostradas para o caso de duas dimensões, somente o comando gtext não foi utilizado, uma vez que este só funciona para sistemas em duas dimensões.
CAPÍTULO 4 - Comandos de arquivos
Todos os comandos mostrados nas seções anteriores foram desenvolvidos na tela dentro do ambiente MATLAB e SciLab. É possível, entretanto, chamar um arquivo previamente desenvolvido que contenha informações ou comandos para serem inseridos no ambiente MATLAB e Scilab. Tais arquivos podem ter qualquer nome, desde que tenham extensão "m", para MATLAB e "sce" para SciLab. Assim, em MATLAB, para se carregar tal arquivo, basta digitar seu nome, não sendo necessário digitar a extensão "m", automaticamente assumida pelo programa. Por exemplo, assuma que a matriz a mostrada anteriormente esteja armazenada em um programa chamado "caso1.m". Assuma também que o símbolo ";" não seja colocado ao fim da matriz. Portanto, uma vez dentro do ambiente MATLAB, basta digitar caso1, e a matriz A aparecerá na tela. Em SciLab, o arquivo é executado através da bara de ferramentas, que tem a opção de executar o programa de extensão "sce". Caso o símbolo ";" seja colocado ao fim da matriz, após digitar caso1, a matriz A não será mostrada, muito embora esteja armazenada. De forma a checar as variáveis armazenadas, usa-se o comando "who". O exemplo abaixo ilustra o uso deste comando após a matriz a ter sido armazenada. Digita-se who Obtendo a resposta:
Uma vez carregada a matriz, qualquer das funções mostradas previamente pode ser utilizada. Note também que uma vez que o arquivo de extensão "m" pode conter comandos do programa, o operador pode criar um arquivo ".m" que funcione como um programa . O exemplo abaixo ilustra o arquivo caso1.m contendo a matriz A e os comandos que pedem seu determinante, autovalores, norma e rank. Note que o símbolo ";" é colocado ao fim de cada comando.
9] ;
% os comandos estão abaixo det1=det(A) ; aut=eig(A) ; norm1=norm(A) ; rank1=rank(A) ;
O símbolo "%" utilizado no arquivo representa comentários, e não são considerados pelo programa. Em "SciLab" os comentários são dados pelo comando //. A exclusão deste símbolo antes da sentença "os comandos estão abaixo" produziria uma mensagem de erro. Digitando caso1 na tela, esta permanecerá limpa após a execução do programa, uma vez que o símbolo ";" foi utilizado.
» caso1
O comando "who" indica as variáveis processadas:
Portanto, todas as variáveis estão reconhecidas pelo programa. Para saber o valor destas variáveis, basta digitar a variável de interesse. Por exemplo, para saber a norma de
a, digita-se
» norm1
que é a variável associada a norma no programa caso1.m. A resposta do programa é dada por
norm1 =
Qualquer outra variável pode ser obtida desta forma. Uma outra possibilidade refere-se ao armazenamento dos resultados obtidos. Para este fim o comando "diary" pode ser utilizado.
Armazenando resultados
Assuma que as operações executadas acima devam ser armazenadas em um outro arquivo. Para isso, abre-se um arquivo usando o comando "diary nome", onde "nome" é um nome qualquer escolhido. Anota-se as variáveis de interesse, e quando o processo se encerrar, fecha-se o arquivo com o comando "diary off". O exemplo abaixo é feito a partir do arquivo caso1.m.
» diary resul » aut
O arquivo resul fornece
» det1
» rank1
rank1 =
Idêntico, portanto, aos comandos dados na tela.
Foi mostrado que o comando "who" mostra as variáveis armazenadas pelo programa. Pode ser de interesse do operador, por uma razão qualquer, excluir uma variável durante o processamento. Para isso usa-se o comando "clear", que pode ser utilizado para limpar quantas variáveis se queira. Voltando ao exemplo do arquivo caso1.m, tem-se as variáveis:
Assuma que seja de interesse excluir a variável aut. Executa-se o comando
clear aut
Digitando o comando "who" novamente fornece
E a variável não está mais armazenada. Se todas as variáveis devem ser excluídas, usa-se o comando
Digitando "who" mais uma vez, obtém-se:
Indicando que nenhuma variável encontra-se armazenada. O conjunto de comandos mostrados até então, permite que se programe em MATLAB. Para isto, faz-se uso dos comandos mostrados na próxima seção.
Comando size
Devolve a dimensão do elemento especificado. Por exemplo, size(A) forneceria
1- Criar um arquivo de extensão "m", que contenha uma matriz A de dimensão 4x4.
Achar B=A*A, C=B*A; D=C*A, E=D*A, F=E*A Achar o menor autovalor de cada matriz e plotar, para cada matriz o maior valor singular em função do maior autovalor (módulo). Salvar o gráfico em extensão "bmp" ou
"pcx" e importar em um documento do word.
2- Criar uma matriz aleatória de dimensão 5x5. Criar uma outra matriz, obtida a
partir da multiplicação de um escalar por uma das linhas da matriz original. Varie este
escalar a partir de 1 até 0. Para cada matriz obtida, anotar o menor autovalor e o determinante. Plotarestes valores em função da constante de multiplicação.
CAPÍTULO 5 - Comandos de Programa
Um programa para ser executado em MATLAB precisa ser montado em um arquivo de extensão "m". A exemplo de outras linguagens de programação, existem alguns comandos lógicos inerentes ao programa, além das funções definidas anteriormente. Por outro lado, o programa não requer declaração nem dimensionamento das variáveis. A seguir, algumas funções são mostradas.
Comando utilizado para gerar um loop. Semelhante ao DO utilizado em FORTRAN. O processo se repete até que o limite superior (ou inferior) seja atingido. Exemplo:
» for ti=1:10
j(ti)=2*ti;
No exemplo acima, tï" varia de 1 a 10 com passo 1. Para cada valor de ti, uma variável tj é criada. Passos diferentes de 1 também podem ser considerados, como mostrado abaixo:
» for ti=1:2:11 tj(k)=ti;
No exemplo acima, ti varia de 1 a 11 com passo de 2. A variável tj é criada dentro do loop com índice k atualizado a cada atualização de ti. O exemplo acima serve para números negativos também. Por exemplo,
for t1=1:-0.1:0
varia ti de 1 a 0 com passo de -0.1.
executa-se algo, caso contrário, executa-se outra instrução, ou nenhuma. Exemplo:
for ti=1:10 if ti <= 5 tj(ti)=ti; else tj(ti)=-ti; end
No exemplo acima, ti varia de 1 a 10. É dada então a seguinte instrução: Se ti for menor ou igual a 5, a variável j assume valor igual a ti. Caso contrário (maior que 5) j assume o valor negativo de ti. A inserção do símbolo "<=" estimula o usuário a conhecer os comandos lógicos disponíveis. Uma lista é dada abaixo:
Com os comandos acima, qualquer instrução pode ser dada dentro do comando IF. Note que o comando if foi dado dentro do comando FOR, o que já estrutura a formação de um programa.
Utilizado para encerrar uma execução, desde que alguma exigência seja satisfeita. Exemplo:
for ti=1:10 if ti == 7
tj(ti)=ti;
No exemplo acima, ti varia de 1 a 10. Quando ti for igual a 7, a variável tj assume o mesmo valor, e o operador quer interromper a operação. Isto é feito através do comando break. O primeiro break interrompe o comando if, enquanto o segundo interrompe o comando for.
É também um operador condicional. Manda executar determinadas instruções enquanto uma condição for respeitada. Exemplo:
» while ti <= 6
No exemplo acima, enquanto ti for menor ou igual a 6, tj assume o mesmo valor.
Max, Min e Abs
As funções acima fornecem os valores máximo, mínimo e absoluto de um vetor. A função abs pode ser combinada com as funções máximo e mínimo. Como exemplo, assuma o vetor
Portanto, as funções max e min consideram o valor real de uma variável. Se o valor máximo ou mínimo for desejado em módulo, obtem-se:
» min(abs(A))
Neste caso, a consideração é modular, e o valor -9, considerado mínimo no primeiro caso, torna-se máximo no segundo.
Assuma o mesmo vetor a considerado acima. Se for do interesse do usuário ordenar o vetor a de forma crescente, usa-se o comando
b = sort (A)
Uma vez mais, se os valores em módulo são desejados, usa-se:
c = sort ( abs (A))
Uma terceira alternativa refere-se à possibilidade de escalonamento em ordem
modular decrescente. Para isso, usa-se:
d = sort(-abs ( A))
Note neste caso que os valores de d são negativos, mas isto é irrelevante se o valor modular for de interesse.
Utilizado para encontrar uma variável de interesse dentro de um conjunto de dados. A resposta é a posição da variável dentro do conjunto de dados. Por exemplo
e = find(A == -9)
Utilizado para fornecer alguma informação relevante na tela. Esta informação pode vir associada a um comentário.
fprintf('Representando %g%% do sistema\n\n',nfgh);
A frase 'Representando enquanto nfgh é a informação.
%g%% do sistema\n\n'
Utilizada para fornecer um dado a ser utilizado pelo programa. Neste caso, a informação é digitada pelo usuário na tela.
dc=input('forneça o valor desejado = > ')
E o valor digitado na tela será automaticamente considerado igual a dc.
novamente, o programa volta a ser executado.
Utilizado para salvar em formato binário algumas variáveis de interesse.
Save arq X
Salva no arquivo arq.mat a variável X. Para carregar a variável X, basta digitar load arq, e automaticamente esta varável estará na área de trabalho.
1- Criar uma matriz aleatória de dimensão 8x8 em um arquivo de extensão "m".
Achar norma, rank, autivalores e determinante desta matriz. Multiplica a matriz de 1 a 10. Calcule todos ítens acima para cada fator e plote tudo em função do fator.
Automatizar exercícios do capítulo anterior.
Resolver a equação f(x)=x 2 +2x + 1 por Newton Raphson.
erro=10;
while (erro>0.001)
dy=2*x+2;
delta=-(1/dy)*erro;
erro=x^2+2*x+1;
Capítulo 6 - . Simulink
Simulink é uma opção em MATLAB para simulação de sistemas dinâmicos. Estes sistemas poderiam ser implementados computacionalmente em MATLAB, mas podem ser resolvidos de forma mais simples através desta opção. A seguir, será mostrado como montar um diagrama de blocos em um arquivo de extensão "m". Dentro do ambiente MATLAB, digite "simulink". A seguinte tela será obtida:
SIMULINK Block Library (Version 1.3c)
Cada um dos ítens acima
constitui diversas opções de bloco. Por exemplo,
clicando duas vezes sobre o símbolo sources, obtem-se:
Signal Source Library
Clicando sobre "linear", obteria-se:
Obtendo, portanto, diversos possíveis componentes.
Montagem de um arquivo de blocos
Para se criar um arquivo de extensão "m", clica-se em "file" no menu disponível da caixa "simulink", escolhendo a opção "new". Portanto, passa-se a ter duas janelas, uma com as opções "simulink", e outra referente ao arquivo de extensão "m". Para criar um diagrama de blocos neste arquivo, pressiona-se o botão esquerdo do "mouse" sobre o elemento de interesse e arrasta-se para a janela do arquivo "m". O exemplo abaixo mostra quando a caixa geradora de onda senoidal é arrastada para a janela do arquivo de extensão "m". Esta operação copia esta caixa na janela, i.e., a operação original continua disponível na janela "simulink".
Obtendo na janela
Um sinal integrador deve ser adicionado. Clicando sobre a opção linear, obtêm-se tal comando. Arrastando para a janela do arquivo de extensão "m", obtem-se:
A conexão entre ambos é feita clicando o botão esquerdo do mouse sobre a seta do sinal de onda senoidal, arrastando esta em seguida até o integrador, obtendo:
Desta forma, um simples diagrama de bloco foi montado. Assuma então que os parâmetros da sinal de onda senoidal devam ser ajustados. Neste caso, basta clicar duas vezes o botão esquerdo sobre este bloco no arquivo de extensão "m". Um quadro a respeito deste operador aparecerá, onde amplitude, frequência e ângulo podem ser ajustados. Tal operação é possível para qualquer operador. Este arquivo, se pronto, deve ser salvo. Tal comando é feito através do menu "file" disponível na barra do arquivo onde o diagrama de blocos foi gerado. Note que este arquivo deve ter extensão "m". Assuma que uma vez que este arquivo esteja gravado, deseja sair do programa. Basta fechar o arquivo através do menu "file" e dar o comando "quit" no prompt do MATLAB. Para carregar o arquivo novamente, uma vez estando dentro do MATLAB, basta digitar "simulink", clicar sobre a opção "file", "open" e clicar sobre o nome do arquivo. Se por exemplo, for de interesse do operador inserir um bloco de somatório na saída, procede-se da seguinte forma:
Apaga-se a linha que liga os dois primeiros blocos:
Insere-se o bloco somatório entre os dois blocos existentes:
Finalmente, faz-se as conexões:
E o novo diagrama está pronto. Deve-se salvar o novo arquivo e proceder com a simulação.
Simulando um arquivo de extensão "m
Üma vez criado o arquivo de extensão "m", deve-se escolher que método de integração utilizar. Simulink oferece as seguintes possibilidades:
Método que subtrai as equações dinâmicas
Runge-Kutta de terceira ordem
Runge-Kutta de quinta ordem
Método previsor-corretor de Gear para sistemas stiff.
Método previsor-corretor de Adams
linsim é usado para modelos de sistemas lineares. Rk23 e rk45 são utilizados para sistemas altamente não lineares. Gear é usado quando o sistema é não linear, mas bem comportado. Não funciona bem para perturbações bruscas na entrada ou quando há singularidade. Adams é usado quando o sistema é não linear e bem comportado, mas com poucas constantes de tempo variáveis. Euler é usado somente para testar resultados.
Asumindo que o linsim seja escolhido (todos os outros têm procedimento idêntico), digita-se:
[a b]=linsim("file",tmax,xo,options)
a,b são os vetores de saída
file é o arquivo de extensão "m" onde o diagrama de blocos está contido. Tmax é o tempo máximo de processamento.
xo é o vetor de condições iniciais
options contém a tolerância, passo máximo e mínimo.
Um gráfico que mostre o comportamento de a em função de b pode ser obtido como mostrado anteriormente na seção de gráficos. O exemplo abaixo mostra a simulação do diagrama de blocos genérico mostrado no arquivo sim1.m :
O sinal gerador é de uma onda senoidal de amplitude 1. O seguinte comando é
dado para executar a simulação:
options=[0.001,0.00001,10];
[tl,xl]=linsim('sim1',10,1,options);
Com o comando de gráfico
Obtendo o seguinte gráfico:
plot(tl,xl,'w')
Se uma das variáveis for alterada, por exemplo, a função de transferência tiver o numerador igual a 2, obtêm-se:
Portanto, qualquer mudança pode ser feita para se testar o efeito nas variáveis de
Simular o sistema abaixo, onde R=2, L=1
Incluir um capacitor de C=1 em série e simular novamente. Simular utilizando função de transferência (bloco "transfer function") e por variáveis de estado (bloco "state space")