MATLAB - Guia Rápido
MATLAB (matrix Laboratory) é uma linguagem de programação de alto nível de quarta geração e ambiente interativo para computação numérica, visualização e programação.
MATLAB é desenvolvido pela MathWorks.
Permite manipulações de matrizes; plotagem de funções e dados; implementação de algoritmos; criação de interfaces de usuário; interface com programas escritos em outras linguagens, incluindo C, C ++, Java e FORTRAN; analisar dados; desenvolver algoritmos; e criar modelos e aplicativos.
Possui vários comandos embutidos e funções matemáticas que o ajudam em cálculos matemáticos, geração de gráficos e execução de métodos numéricos.
O Poder da Matemática Computacional do MATLAB
O MATLAB é usado em todas as facetas da matemática computacional. A seguir estão alguns cálculos matemáticos comumente usados, onde é mais comumente usado -
- Lidando com matrizes e matrizes
- Plotagem e gráficos 2-D e 3-D
- Álgebra Linear
- Equações Algébricas
- Funções não lineares
- Statistics
- Análise de dados
- Cálculo e equações diferenciais
- Cálculos Numéricos
- Integration
- Transforms
- Ajuste de curva
- Várias outras funções especiais
Características do MATLAB
A seguir estão os recursos básicos do MATLAB -
É uma linguagem de alto nível para computação numérica, visualização e desenvolvimento de aplicativos.
Ele também fornece um ambiente interativo para exploração iterativa, design e solução de problemas.
Ele fornece uma vasta biblioteca de funções matemáticas para álgebra linear, estatística, análise de Fourier, filtragem, otimização, integração numérica e solução de equações diferenciais ordinárias.
Ele fornece gráficos integrados para visualizar dados e ferramentas para criar plotagens personalizadas.
A interface de programação do MATLAB oferece ferramentas de desenvolvimento para melhorar a capacidade de manutenção da qualidade do código e maximizar o desempenho.
Ele fornece ferramentas para construir aplicativos com interfaces gráficas personalizadas.
Ele fornece funções para integrar algoritmos baseados em MATLAB com aplicativos e linguagens externas, como C, Java, .NET e Microsoft Excel.
Usos do MATLAB
O MATLAB é amplamente utilizado como ferramenta computacional na ciência e engenharia, abrangendo os campos da física, química, matemática e todos os ramos da engenharia. É usado em uma variedade de aplicações, incluindo -
- Processamento de Sinal e Comunicações
- Processamento de imagem e vídeo
- Sistemas de controle
- Teste e Medição
- Finanças Computacionais
- Biologia Computacional
Configuração de ambiente local
Configurar o ambiente MATLAB é questão de poucos cliques. O instalador pode ser baixado aqui .
MathWorks fornece o produto licenciado, uma versão de teste e uma versão de estudante também. Você precisa se logar no site e aguardar um pouco a aprovação deles.
Depois de baixar o instalador, o software pode ser instalado com alguns cliques.
Compreendendo o ambiente MATLAB
O IDE de desenvolvimento MATLAB pode ser iniciado a partir do ícone criado na área de trabalho. A janela principal de trabalho do MATLAB é chamada de área de trabalho. Quando o MATLAB é iniciado, a área de trabalho aparece em seu layout padrão -
A área de trabalho possui os seguintes painéis -
Current Folder - Este painel permite que você acesse as pastas e arquivos do projeto.
Command Window- Esta é a área principal onde os comandos podem ser inseridos na linha de comando. É indicado pelo prompt de comando (>>).
Workspace - A área de trabalho mostra todas as variáveis criadas e / ou importadas de arquivos.
Command History - Este painel mostra ou retorna comandos que são inseridos na linha de comando.
Configurar GNU Octave
Se você deseja usar o Octave em sua máquina (Linux, BSD, OS X ou Windows), faça o download da versão mais recente em Baixe o GNU Octave . Você pode verificar as instruções de instalação fornecidas para sua máquina.
O ambiente MATLAB se comporta como uma calculadora supercomplexa. Você pode inserir comandos no >> prompt de comando.
MATLAB é um ambiente interpretado. Em outras palavras, você dá um comando e o MATLAB o executa imediatamente.
Prática Prática
Digite uma expressão válida, por exemplo,
5 + 5
E pressione ENTER
Ao clicar no botão Executar ou digitar Ctrl + E, o MATLAB o executa imediatamente e o resultado retornado é -
ans = 10
Vamos pegar mais alguns exemplos -
3 ^ 2 % 3 raised to the power of 2
Ao clicar no botão Executar ou digitar Ctrl + E, o MATLAB o executa imediatamente e o resultado retornado é -
ans = 9
Outro exemplo,
sin(pi /2) % sine of angle 90o
Ao clicar no botão Executar ou digitar Ctrl + E, o MATLAB o executa imediatamente e o resultado retornado é -
ans = 1
Outro exemplo,
7/0 % Divide by zero
Ao clicar no botão Executar ou digitar Ctrl + E, o MATLAB o executa imediatamente e o resultado retornado é -
ans = Inf
warning: division by zero
Outro exemplo,
732 * 20.3
Ao clicar no botão Executar ou digitar Ctrl + E, o MATLAB o executa imediatamente e o resultado retornado é -
ans = 1.4860e+04
O MATLAB fornece algumas expressões especiais para alguns símbolos matemáticos, como pi para π, Inf para ∞, i (e j) para √-1 etc. Nan significa 'não é um número'.
Uso do ponto e vírgula (;) no MATLAB
Ponto-e-vírgula (;) indica o fim da declaração. No entanto, se você deseja suprimir e ocultar a saída do MATLAB para uma expressão, adicione um ponto-e-vírgula após a expressão.
Por exemplo,
x = 3;
y = x + 5
Ao clicar no botão Executar ou digitar Ctrl + E, o MATLAB o executa imediatamente e o resultado retornado é -
y = 8
Adicionando comentários
O símbolo de porcentagem (%) é usado para indicar uma linha de comentário. Por exemplo,
x = 9 % assign the value 9 to x
Você também pode escrever um bloco de comentários usando os operadores de bloco de comentários% {e%}.
O editor MATLAB inclui ferramentas e itens de menu de contexto para ajudá-lo a adicionar, remover ou alterar o formato dos comentários.
Operadores e caracteres especiais comumente usados
O MATLAB suporta os seguintes operadores e caracteres especiais comumente usados -
Operador | Objetivo |
---|---|
+ | Mais; operador de adição. |
- | Menos; operador de subtração. |
* | Operador de multiplicação escalar e matricial. |
.* | Operador de multiplicação de matriz. |
^ | Operador de exponenciação escalar e matricial. |
.^ | Operador de exponenciação de matriz. |
\ | Operador de divisão à esquerda. |
/ | Operador de divisão à direita. |
.\ | Operador de divisão à esquerda da matriz. |
./ | Operador de divisão à direita do array. |
: | Cólon; gera elementos regularmente espaçados e representa uma linha ou coluna inteira. |
( ) | Parênteses; inclui argumentos de função e índices de matriz; substitui a precedência. |
[ ] | Suportes; inclui elementos da matriz. |
. | Ponto decimal. |
… | Elipse; operador de continuação de linha |
, | Vírgula; separa instruções e elementos em uma linha |
; | Ponto e vírgula; separa colunas e suprime a exibição. |
% | Sinal de porcentagem; designa um comentário e especifica a formatação. |
_ | Cite o sinal e transponha o operador. |
._ | Operador de transposição não conjugado. |
= | Operador de atribuição. |
Variáveis e constantes especiais
O MATLAB suporta as seguintes variáveis e constantes especiais -
Nome | Significado |
---|---|
ans | Resposta mais recente. |
eps | Exatidão da precisão de ponto flutuante. |
i,j | A unidade imaginária √-1. |
Inf | Infinidade. |
NaN | Resultado numérico indefinido (não é um número). |
pi | O número π |
Nomeando Variáveis
Os nomes das variáveis consistem em uma letra seguida por qualquer número de letras, dígitos ou sublinhados.
MATLAB é case-sensitive.
Os nomes das variáveis podem ter qualquer comprimento, no entanto, o MATLAB usa apenas os primeiros N caracteres, onde N é dado pela função namelengthmax.
Salvando Seu Trabalho
o save comando é usado para salvar todas as variáveis na área de trabalho, como um arquivo com extensão .mat, no diretório atual.
Por exemplo,
save myfile
Você pode recarregar o arquivo a qualquer momento mais tarde usando o load comando.
load myfile
No ambiente MATLAB, cada variável é um array ou matriz.
Você pode atribuir variáveis de uma maneira simples. Por exemplo,
x = 3 % defining x and initializing it with a value
O MATLAB executará a instrução acima e retornará o seguinte resultado -
x = 3
Ele cria uma matriz 1 por 1 denominada x e armazena o valor 3 em seu elemento. Vamos verificar outro exemplo,
x = sqrt(16) % defining x and initializing it with an expression
O MATLAB executará a instrução acima e retornará o seguinte resultado -
x = 4
Observe que -
Depois que uma variável é inserida no sistema, você pode consultá-la mais tarde.
As variáveis devem ter valores antes de serem usadas.
Quando uma expressão retorna um resultado que não está atribuído a nenhuma variável, o sistema o atribui a uma variável chamada ans, que pode ser usada posteriormente.
Por exemplo,
sqrt(78)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 8.8318
Você pode usar esta variável ans -
sqrt(78);
9876/ans
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 1118.2
Vejamos outro exemplo -
x = 7 * 8;
y = x * 7.89
O MATLAB executará a instrução acima e retornará o seguinte resultado -
y = 441.84
Múltiplas atribuições
Você pode ter várias atribuições na mesma linha. Por exemplo,
a = 2; b = 7; c = a * b
O MATLAB executará a instrução acima e retornará o seguinte resultado -
c = 14
Esqueci as variáveis!
o who comando exibe todos os nomes de variáveis que você usou.
who
O MATLAB executará a instrução acima e retornará o seguinte resultado -
Your variables are:
a ans b c
o whos comando exibe um pouco mais sobre as variáveis -
- Variáveis atualmente na memória
- Tipo de cada variável
- Memória alocada para cada variável
- Se são variáveis complexas ou não
whos
O MATLAB executará a instrução acima e retornará o seguinte resultado -
Attr Name Size Bytes Class
==== ==== ==== ==== =====
a 1x1 8 double
ans 1x70 757 cell
b 1x1 8 double
c 1x1 8 double
Total is 73 elements using 781 bytes
o clear comando exclui todas (ou as variáveis especificadas) da memória.
clear x % it will delete x, won't display anything
clear % it will delete all variables in the workspace
% peacefully and unobtrusively
Longas atribuições
Atribuições longas podem ser estendidas para outra linha usando reticências (...). Por exemplo,
initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity + acceleration * time
O MATLAB executará a instrução acima e retornará o seguinte resultado -
final_velocity = 196
O formato Comando
Por padrão, o MATLAB exibe números com quatro valores de casas decimais. Isso é conhecido comoshort format.
No entanto, se quiser mais precisão, você precisa usar o format comando.
o format long comando exibe 16 dígitos após o decimal.
Por exemplo -
format long
x = 7 + 10/3 + 5 ^ 1.2
O MATLAB irá executar a instrução acima e retornar o seguinte resultado -
x = 17.2319816406394
Outro exemplo,
format short
x = 7 + 10/3 + 5 ^ 1.2
O MATLAB executará a instrução acima e retornará o seguinte resultado -
x = 17.232
o format bankcomando arredonda os números para duas casas decimais. Por exemplo,
format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6
O MATLAB executará a instrução acima e retornará o seguinte resultado -
weekly_wage = 1064.70
O MATLAB exibe números grandes usando notação exponencial.
o format short e comando permite exibir em forma exponencial com quatro casas decimais mais o expoente.
Por exemplo,
format short e
4.678 * 4.9
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 2.2922e+01
o format long ecomando permite exibir em forma exponencial com quatro casas decimais mais o expoente. Por exemplo,
format long e
x = pi
O MATLAB executará a instrução acima e retornará o seguinte resultado -
x = 3.141592653589793e+00
o format ratcomando fornece a expressão racional mais próxima resultante de um cálculo. Por exemplo,
format rat
4.678 * 4.9
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 34177/1491
Criação de vetores
Um vetor é uma matriz unidimensional de números. O MATLAB permite a criação de dois tipos de vetores -
- Vetores de linha
- Vetores coluna
Row vectors são criados colocando o conjunto de elementos entre colchetes, usando espaço ou vírgula para delimitar os elementos.
Por exemplo,
r = [7 8 9 10 11]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
r =
7 8 9 10 11
Outro exemplo,
r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t
O MATLAB executará a instrução acima e retornará o seguinte resultado -
res =
9 11 13 15 17
Column vectors são criados colocando o conjunto de elementos entre colchetes, usando ponto e vírgula (;) para delimitar os elementos.
c = [7; 8; 9; 10; 11]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
c =
7
8
9
10
11
Criação de matrizes
Uma matriz é uma matriz bidimensional de números.
No MATLAB, uma matriz é criada inserindo cada linha como uma sequência de espaço ou elementos separados por vírgula, e o final de uma linha é demarcado por um ponto e vírgula. Por exemplo, vamos criar uma matriz 3 por 3 como -
m = [1 2 3; 4 5 6; 7 8 9]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
m =
1 2 3
4 5 6
7 8 9
MATLAB é um programa interativo para computação numérica e visualização de dados. Você pode inserir um comando digitando-o no prompt do MATLAB '>>' noCommand Window.
Nesta seção, forneceremos listas de comandos gerais do MATLAB comumente usados.
Comandos para gerenciar uma sessão
O MATLAB fornece vários comandos para gerenciar uma sessão. A tabela a seguir fornece todos esses comandos -
Comando | Objetivo |
---|---|
clc | Limpa a janela de comando. |
Claro | Remove variáveis da memória. |
existir | Verifica a existência de arquivo ou variável. |
global | Declara as variáveis como globais. |
Socorro | Procura um tópico de ajuda. |
olhe para | Pesquisa entradas de ajuda para uma palavra-chave. |
Sair | Pára o MATLAB. |
quem | Lista as variáveis atuais. |
quem é | Lista as variáveis atuais (tela longa). |
Comandos para trabalhar com o sistema
O MATLAB fornece vários comandos úteis para trabalhar com o sistema, como salvar o trabalho atual na área de trabalho como um arquivo e carregar o arquivo posteriormente.
Ele também fornece vários comandos para outras atividades relacionadas ao sistema, como exibição de data, listagem de arquivos no diretório, exibição do diretório atual, etc.
A tabela a seguir exibe alguns comandos relacionados ao sistema comumente usados -
Comando | Objetivo |
---|---|
CD | Muda o diretório atual. |
encontro | Exibe a data atual. |
excluir | Exclui um arquivo. |
diário | Liga / desliga a gravação do arquivo do diário. |
dir | Lista todos os arquivos no diretório atual. |
carga | Carrega variáveis de espaço de trabalho de um arquivo. |
caminho | Exibe o caminho de pesquisa. |
pwd | Exibe o diretório atual. |
Salve | Salva variáveis do espaço de trabalho em um arquivo. |
tipo | Exibe o conteúdo de um arquivo. |
o que | Lista todos os arquivos MATLAB no diretório atual. |
wklread | Lê o arquivo de planilha .wk1. |
Comandos de entrada e saída
O MATLAB fornece os seguintes comandos relacionados de entrada e saída -
Comando | Objetivo |
---|---|
disp | Exibe o conteúdo de uma matriz ou string. |
fscanf | Leia os dados formatados de um arquivo. |
formato | Controla o formato de exibição da tela. |
fprintf | Executa gravações formatadas na tela ou arquivo. |
entrada | Exibe prompts e espera por entrada. |
; | Suprime a impressão da tela. |
o fscanf e fprintfos comandos se comportam como funções C scanf e printf. Eles suportam os seguintes códigos de formato -
Código de Formato | Objetivo |
---|---|
%s | Formate como uma string. |
%d | Formate como um inteiro. |
%f | Formate como um valor de ponto flutuante. |
%e | Formate como um valor de ponto flutuante em notação científica. |
%g | Formato na forma mais compacta:% f ou% e. |
\n | Insira uma nova linha na string de saída. |
\t | Insira uma guia na string de saída. |
A função de formato tem os seguintes formatos usados para exibição numérica -
Função de Formato | Exibir até |
---|---|
formato curto | Quatro dígitos decimais (padrão). |
formato longo | 16 dígitos decimais. |
formato curto e | Cinco dígitos mais expoente. |
formato longo e | 16 dígitos mais expoentes. |
banco de formato | Dois dígitos decimais. |
formato + | Positivo, negativo ou zero. |
formatar rato | Aproximação racional. |
formato compacto | Suprime alguns avanços de linha. |
formato solto | Redefine para o modo de exibição menos compacto. |
Comandos de vetor, matriz e matriz
A tabela a seguir mostra vários comandos usados para trabalhar com matrizes, matrizes e vetores -
Comando | Objetivo |
---|---|
gato | Concatena matrizes. |
encontrar | Encontra índices de elementos diferentes de zero. |
comprimento | Calcula o número de elementos. |
linspace | Cria vetores espaçados regularmente. |
logspace | Cria vetor espaçado logaritmicamente. |
max | Retorna o maior elemento. |
min | Retorna o menor elemento. |
aguilhão | Produto de cada coluna. |
remodelar | Altera o tamanho. |
Tamanho | Calcula o tamanho da matriz. |
ordenar | Classifica cada coluna. |
soma | Soma cada coluna. |
olho | Cria uma matriz de identidade. |
uns | Cria uma série de unidades. |
zeros | Cria uma matriz de zeros. |
Cruz | Calcula produtos cruzados da matriz. |
ponto | Calcula produtos de ponto da matriz. |
det | Calcula o determinante de uma matriz. |
inv | Calcula o inverso de uma matriz. |
pinv | Calcula o pseudoinverso de uma matriz. |
classificação | Calcula a classificação de uma matriz. |
rref | Calcula a forma escalonada de linha reduzida. |
célula | Cria matriz de células. |
celldisp | Exibe a matriz de células. |
lote de células | Exibe uma representação gráfica da matriz de células. |
num2cell | Converte matriz numérica em matriz de células. |
lidar | Combina listas de entrada e saída. |
iscell | Identifica a matriz de células. |
Comandos de plotagem
O MATLAB fornece vários comandos para plotar gráficos. A tabela a seguir mostra alguns dos comandos comumente usados para plotagem -
Comando | Objetivo |
---|---|
eixo | Define os limites do eixo. |
fplot | Plotagem inteligente de funções. |
rede | Exibe linhas de grade. |
enredo | Gera o gráfico xy. |
impressão | Imprime plotagem ou salva plotagem em um arquivo. |
título | Coloca o texto no topo do gráfico. |
xlabel | Adiciona rótulo de texto ao eixo x. |
Ylabel | Adiciona rótulo de texto ao eixo y. |
eixos | Cria objetos de eixos. |
Fechar | Fecha o gráfico atual. |
feche tudo | Fecha todos os lotes. |
figura | Abre uma nova janela de figura. |
gtext | Habilita o posicionamento do rótulo com o mouse. |
aguarde | Congela o gráfico atual. |
lenda | Posicionamento da legenda com o mouse. |
refrescar | Redesenha a janela da figura atual. |
conjunto | Especifica propriedades de objetos, como eixos. |
subtrama | Cria gráficos em subjanelas. |
texto | Coloca string na figura. |
Barra | Cria gráfico de barras. |
loglog | Cria um gráfico log-log. |
polar | Cria um gráfico polar. |
semilogx | Cria um gráfico semilog. (abscissa logarítmica). |
semilogia | Cria um gráfico semilog. (ordenada logarítmica). |
escadas | Cria o gráfico de escadas. |
haste | Cria um gráfico de haste. |
Até agora, usamos o ambiente MATLAB como calculadora. No entanto, MATLAB também é uma linguagem de programação poderosa, bem como um ambiente computacional interativo.
Nos capítulos anteriores, você aprendeu como inserir comandos no prompt de comando do MATLAB. O MATLAB também permite que você escreva uma série de comandos em um arquivo e execute o arquivo como uma unidade completa, como escrever uma função e chamá-la.
The M Files
O MATLAB permite escrever dois tipos de arquivos de programa -
Scripts - arquivos de script são arquivos de programa com .m extension. Nestes arquivos, você escreve uma série de comandos, que deseja executar juntos. Scripts não aceitam entradas e não retornam nenhuma saída. Eles operam em dados no espaço de trabalho.
Functions - arquivos de funções também são arquivos de programa com .m extension. As funções podem aceitar entradas e retornar saídas. Variáveis internas são locais para a função.
Você pode usar o editor MATLAB ou qualquer outro editor de texto para criar seu .marquivos. Nesta seção, discutiremos os arquivos de script. Um arquivo de script contém várias linhas sequenciais de comandos MATLAB e chamadas de função. Você pode executar um script digitando seu nome na linha de comando.
Criação e execução de arquivo de script
Para criar arquivos de script, você precisa usar um editor de texto. Você pode abrir o editor MATLAB de duas maneiras -
- Usando o prompt de comando
- Usando o IDE
Se você estiver usando o prompt de comando, digite editno prompt de comando. Isso abrirá o editor. Você pode digitar diretamenteedit e o nome do arquivo (com extensão .m)
edit
Or
edit <filename>
O comando acima criará o arquivo no diretório padrão do MATLAB. Se você deseja armazenar todos os arquivos de programa em uma pasta específica, deverá fornecer o caminho completo.
Vamos criar uma pasta chamada progs. Digite os seguintes comandos no prompt de comando (>>) -
mkdir progs % create directory progs under default directory
chdir progs % changing the current directory to progs
edit prog1.m % creating an m file named prog1.m
Se você estiver criando o arquivo pela primeira vez, o MATLAB solicitará que você confirme. Clique em Sim.
Alternativamente, se você estiver usando o IDE, escolha NOVO -> Script. Isso também abre o editor e cria um arquivo denominado Sem título. Você pode nomear e salvar o arquivo após digitar o código.
Digite o seguinte código no editor -
NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
+ NonTeachingStaff;
disp(Total);
Depois de criar e salvar o arquivo, você pode executá-lo de duas maneiras -
Clicar no Run botão na janela do editor ou
Basta digitar o nome do arquivo (sem extensão) no prompt de comando: >> prog1
O prompt da janela de comando exibe o resultado -
6170
Exemplo
Crie um arquivo de script e digite o seguinte código -
a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
c = 12
d = 12.657
e = 63.285
f = 3.1852e-06
O MATLAB não requer nenhuma declaração de tipo ou declarações de dimensão. Sempre que o MATLAB encontra um novo nome de variável, ele cria a variável e aloca o espaço de memória apropriado.
Se a variável já existe, o MATLAB substitui o conteúdo original por um novo conteúdo e aloca novo espaço de armazenamento, quando necessário.
Por exemplo,
Total = 42
A declaração acima cria uma matriz 1 por 1 chamada 'Total' e armazena o valor 42 nela.
Tipos de dados disponíveis no MATLAB
O MATLAB fornece 15 tipos de dados fundamentais. Cada tipo de dados armazena dados que estão na forma de uma matriz ou array. O tamanho desta matriz ou array é no mínimo 0 por 0 e isso pode crescer até uma matriz ou array de qualquer tamanho.
A tabela a seguir mostra os tipos de dados mais comumente usados no MATLAB -
Sr. Não. | Tipo de dados e descrição |
---|---|
1 | int8 Inteiro assinado de 8 bits |
2 | uint8 Inteiro sem sinal de 8 bits |
3 | int16 Inteiro assinado de 16 bits |
4 | uint16 Inteiro não assinado de 16 bits |
5 | int32 Inteiro assinado de 32 bits |
6 | uint32 Inteiro sem sinal de 32 bits |
7 | int64 Inteiro assinado de 64 bits |
8 | uint64 Inteiro não assinado de 64 bits |
9 | single dados numéricos de precisão única |
10 | double dados numéricos de dupla precisão |
11 | logical valores lógicos de 1 ou 0 representam verdadeiro e falso, respectivamente |
12 | char dados de caracteres (strings são armazenadas como vetores de caracteres) |
13 | cell array matriz de células indexadas, cada uma capaz de armazenar uma matriz de diferentes dimensões e tipos de dados |
14 | structure Estruturas semelhantes a C, cada estrutura tendo campos nomeados capazes de armazenar uma matriz de uma dimensão e tipo de dados diferente |
15 | function handle ponteiro para uma função |
16 | user classes objetos construídos a partir de uma classe definida pelo usuário |
17 | java classes objetos construídos a partir de uma classe Java |
Exemplo
Crie um arquivo de script com o seguinte código -
str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
str = Hello World!
n = 2345
d = 2345
un = 790
rn = 5678.9
c = 5679
Conversão de Tipo de Dados
O MATLAB fornece várias funções para conversão de um valor de um tipo de dados para outro. A tabela a seguir mostra as funções de conversão de tipo de dados -
Função | Objetivo |
---|---|
Caracteres | Converter para matriz de caracteres (string) |
int2str | Converter dados inteiros em string |
mat2str | Converter matriz em string |
num2str | Converter número em string |
str2double | Converter string em valor de precisão dupla |
str2num | Converter string em número |
native2unicode | Converter bytes numéricos em caracteres Unicode |
unicode2native | Converter caracteres Unicode em bytes numéricos |
base2dec | Converte a sequência de números de base N em número decimal |
bin2dec | Converter string de número binário em número decimal |
dec2base | Converter decimal em número de base N na string |
dec2bin | Converter decimal em número binário na string |
dec2hex | Converter decimal em número hexadecimal na string |
hex2dec | Converter string de número hexadecimal em número decimal |
hex2num | Converter string de número hexadecimal em número de precisão dupla |
num2hex | Converta singles e duplos em strings hexadecimais IEEE |
cell2mat | Converter matriz de células em matriz numérica |
cell2struct | Converter matriz de células em matriz de estrutura |
cellstr | Crie uma matriz de células de strings a partir da matriz de caracteres |
mat2cell | Converter array em array de células com células de tamanhos potencialmente diferentes |
num2cell | Converta matriz em matriz de células com células de tamanho consistente |
struct2cell | Converter estrutura em matriz de células |
Determinação de tipos de dados
O MATLAB fornece várias funções para identificar o tipo de dados de uma variável.
A tabela a seguir fornece as funções para determinar o tipo de dados de uma variável -
Função | Objetivo |
---|---|
é | Detectar estado |
é um | Determine se a entrada é um objeto da classe especificada |
iscell | Determine se a entrada é uma matriz de células |
iscellstr | Determine se a entrada é uma matriz de células de strings |
ischar | Determine se o item é uma matriz de caracteres |
Isfield | Determine se a entrada é um campo de matriz de estrutura |
flutuar | Determine se a entrada é uma matriz de ponto flutuante |
ishghandle | True para manipuladores de objeto de Handle Graphics |
isinteger | Determine se a entrada é uma matriz de inteiros |
isjava | Determine se a entrada é um objeto Java |
islogical | Determine se a entrada é uma matriz lógica |
isnumeric | Determine se a entrada é uma matriz numérica |
isobjeto | Determine se a entrada é um objeto MATLAB |
é real | Verifique se a entrada é uma matriz real |
isscalar | Determine se a entrada é escalar |
isstr | Determine se a entrada é uma matriz de caracteres |
isstruct | Determine se a entrada é um array de estrutura |
isvetor | Determine se a entrada é um vetor |
classe | Determine a classe do objeto |
atributos válidos | Verifique a validade da matriz |
quem é | Listar variáveis na área de trabalho, com tamanhos e tipos |
Exemplo
Crie um arquivo de script com o seguinte código -
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
Quando você executa o arquivo, ele produz o seguinte resultado -
x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =
1 2 3
ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0
Um operador é um símbolo que informa ao compilador para executar manipulações matemáticas ou lógicas específicas. O MATLAB é projetado para operar principalmente em matrizes e arrays inteiros. Portanto, os operadores no MATLAB trabalham com dados escalares e não escalares. O MATLAB permite os seguintes tipos de operações elementares -
- Operadores aritméticos
- Operadores Relacionais
- Operadores lógicos
- Operações bit a bit
- Operações de conjunto
Operadores aritméticos
O MATLAB permite dois tipos diferentes de operações aritméticas -
- Operações aritméticas de matriz
- Operações aritméticas de matriz
As operações aritméticas de matriz são as mesmas definidas na álgebra linear. As operações de array são executadas elemento por elemento, em array unidimensional e multidimensional.
Os operadores de matriz e operadores de matriz são diferenciados pelo símbolo de ponto (.). No entanto, como a operação de adição e subtração é a mesma para matrizes e arrays, o operador é o mesmo para ambos os casos. A tabela a seguir fornece uma breve descrição dos operadores -
Mostrar exemplos
Sr. Não. | Operador e descrição |
---|---|
1 | + Adição ou adição unária. A + B adiciona os valores armazenados nas variáveis A e B. A e B devem ter o mesmo tamanho, a menos que um seja escalar. Um escalar pode ser adicionado a uma matriz de qualquer tamanho. |
2 | - Subtração ou menos unário. AB subtrai o valor de B de A. A e B devem ter o mesmo tamanho, a menos que um seja escalar. Um escalar pode ser subtraído de uma matriz de qualquer tamanho. |
3 | * Multiplicação da matriz. C = A * B é o produto algébrico linear das matrizes A e B. Mais precisamente,
Para A e B não escalares, o número de colunas de A deve ser igual ao número de linhas de B. Um escalar pode multiplicar uma matriz de qualquer tamanho. |
4 | .* Multiplicação de matriz. A. * B é o produto elemento por elemento das matrizes A e B. A e B devem ter o mesmo tamanho, a menos que um deles seja escalar. |
5 | / Corte ou divisão à direita da matriz. B / A é aproximadamente igual a B * inv (A). Mais precisamente, B / A = (A '\ B') '. |
6 | ./ Array divisão certa. A./B é a matriz com os elementos A (i, j) / B (i, j). A e B devem ter o mesmo tamanho, a menos que um deles seja escalar. |
7 | \ Barra invertida ou divisão à esquerda da matriz. Se A é uma matriz quadrada, A \ B é aproximadamente o mesmo que inv (A) * B, exceto que é calculado de uma maneira diferente. Se A é um N-a-n matriz e B é um vector de coluna com n componentes, ou uma matriz com vários de tais colunas, então X = A \ B é a solução para a equação AX = B . Uma mensagem de aviso é exibida se A estiver mal dimensionado ou quase singular. |
8 | .\ Array deixou a divisão. A. \ B é a matriz com os elementos B (i, j) / A (i, j). A e B devem ter o mesmo tamanho, a menos que um deles seja escalar. |
9 | ^ Poder da matriz. X ^ p é X elevado à potência p, se p for um escalar. Se p for um inteiro, a potência é calculada por quadratura repetida. Se o número inteiro for negativo, X será invertido primeiro. Para outros valores de p, o cálculo envolve autovalores e autovetores, de modo que se [V, D] = eig (X), então X ^ p = V * D. ^ p / V. |
10 | .^ Poder do array. A. ^ B é a matriz com os elementos A (i, j) à potência B (i, j). A e B devem ter o mesmo tamanho, a menos que um deles seja escalar. |
11 | ' Transposição de matriz. A 'é a transposta algébrica linear de A. Para matrizes complexas, esta é a transposta conjugada complexa. |
12 | .' Transposição de matriz. UMA.' é a transposta da matriz de A. Para matrizes complexas, isso não envolve conjugação. |
Operadores Relacionais
Os operadores relacionais também podem trabalhar com dados escalares e não escalares. Operadores relacionais para matrizes realizam comparações elemento por elemento entre duas matrizes e retornam uma matriz lógica do mesmo tamanho, com elementos definidos como 1 lógico (verdadeiro) onde a relação é verdadeira e elementos definidos como 0 lógico (falso) onde é não.
A tabela a seguir mostra os operadores relacionais disponíveis no MATLAB -
Mostrar exemplos
Sr. Não. | Operador e descrição |
---|---|
1 | < Menor que |
2 | <= Menos que ou igual a |
3 | > Maior que |
4 | >= Melhor que ou igual a |
5 | == Igual a |
6 | ~= Diferente de |
Operadores lógicos
O MATLAB oferece dois tipos de operadores lógicos e funções -
Por elemento - esses operadores operam em elementos correspondentes de matrizes lógicas.
Curto-circuito - Esses operadores operam em expressões escalares e lógicas.
Operadores lógicos elemento a elemento operam elemento por elemento em matrizes lógicas. Os símbolos &, | e ~ são os operadores lógicos de matriz AND, OR e NOT.
Operadores lógicos de curto-circuito permitem curto-circuito em operações lógicas. Os símbolos && e || são os operadores lógicos de curto-circuito AND e OR.
Mostrar exemplos
Operações bit a bit
Operadores bit a bit trabalham em bits e executam operações bit a bit. As tabelas de verdade para &, | e ^ são as seguintes -
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Suponha que A = 60; e B = 13; Agora, em formato binário, eles serão os seguintes -
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~ A = 1100 0011
O MATLAB fornece várias funções para operações bit a bit, como operações 'bit a bit e', 'bit a bit ou' e 'não bit a bit', operação de deslocamento, etc.
A tabela a seguir mostra as operações bit a bit comumente usadas -
Mostrar exemplos
Função | Objetivo |
---|---|
bitand (a, b) | E bit a bit de inteiros a e b |
bitcmp (a) | Complemento bit-a-bit de um |
bitget (a, pos) | Obtém o bit na posição especificada pos , na matriz de inteiros a |
bitor (a, b) | OR bit a bit de inteiros a e b |
bitset (a, pos) | Defina a broca na posição específica pos de um |
bitshift (a, k) | Retorna a deslocado para a esquerda por k bits, equivalente a multiplicar por 2 k . Os valores negativos de k correspondem ao deslocamento dos bits à direita ou à divisão por 2 | k | e arredondamento para o número inteiro mais próximo para o infinito negativo. Quaisquer bits de estouro são truncados. |
bitxor (a, b) | XOR bit a bit de inteiros a e b |
swapbytes | Troca de ordem de byte |
Operações de conjunto
O MATLAB fornece várias funções para operações de conjunto, como união, interseção e teste para associação de conjunto, etc.
A tabela a seguir mostra algumas operações de conjunto comumente usadas -
Mostrar exemplos
Sr. Não. | Descrição da função |
---|---|
1 | intersect(A,B) Defina a interseção de duas matrizes; retorna os valores comuns a A e B. Os valores retornados estão em ordem de classificação. |
2 | intersect(A,B,'rows') Trata cada linha de A e cada linha de B como entidades únicas e retorna as linhas comuns a A e B. As linhas da matriz retornada estão em ordem de classificação. |
3 | ismember(A,B) Retorna uma matriz do mesmo tamanho de A, contendo 1 (verdadeiro) onde os elementos de A são encontrados em B. Em outro lugar, retorna 0 (falso). |
4 | ismember(A,B,'rows') Trata cada linha de A e cada linha de B como entidades únicas e retorna um vetor contendo 1 (verdadeiro), onde as linhas da matriz A também são linhas de B. Em outro lugar, ele retorna 0 (falso). |
5 | issorted(A) Retorna 1 lógico (verdadeiro) se os elementos de A estão em ordem de classificação e 0 lógico (falso) caso contrário. A entrada A pode ser um vetor ou uma matriz de sequências de células N por 1 ou 1 por N.A is considered to be sorted if A e a saída de sort (A) são iguais. |
6 | issorted(A, 'rows') Retorna 1 lógico (verdadeiro) se as linhas da matriz bidimensional A estão em ordem de classificação e 0 lógico (falso) caso contrário. Matrix A is considered to be sorted if A e a saída de sortrows (A) são iguais. |
7 | setdiff(A,B) Define a diferença de dois arrays; retorna os valores em A que não estão em B. Os valores na matriz retornada estão em ordem de classificação. |
8 | setdiff(A,B,'rows') Trata cada linha de A e cada linha de B como entidades únicas e retorna as linhas de A que não estão em B. As linhas da matriz retornada estão em ordem de classificação. A opção 'linhas' não oferece suporte a matrizes de células. |
9 | setxor Define OR exclusivo de duas matrizes |
10 | union Define a união de duas matrizes |
11 | unique Valores únicos na matriz |
As estruturas de tomada de decisão requerem que o programador especifique uma ou mais condições a serem avaliadas ou testadas pelo programa, junto com uma instrução ou instruções a serem executadas se a condição for determinada como verdadeira e, opcionalmente, outras instruções a serem executadas se condição é determinada como falsa.
A seguir está a forma geral de uma estrutura típica de tomada de decisão encontrada na maioria das linguagens de programação -
O MATLAB fornece os seguintes tipos de declarações de tomada de decisão. Clique nos links a seguir para verificar seus detalhes -
Sr. Não. | Declaração e descrição |
---|---|
1 | if ... end statement A if ... end statement consiste em uma expressão booleana seguida por uma ou mais instruções. |
2 | if ... else ... end statement A if statement pode ser seguido por um opcional else statement, que é executado quando a expressão booleana é falsa. |
3 | If ... elseif ... elseif ... else ... instruções finais A if declaração pode ser seguida por um (ou mais) opcional elseif... e um else declaração, que é muito útil para testar várias condições. |
4 | declarações if aninhadas Você pode usar um if ou elseif declaração dentro de outra if ou elseif afirmações). |
5 | declaração switch UMA switch instrução permite que uma variável seja testada quanto à igualdade em relação a uma lista de valores. |
6 | instruções switch aninhadas Você pode usar um switch declaração dentro de outra switch afirmações). |
Pode haver uma situação em que você precise executar um bloco de código várias vezes. Em geral, as instruções são executadas sequencialmente. A primeira instrução em uma função é executada primeiro, seguida pela segunda e assim por diante.
As linguagens de programação fornecem várias estruturas de controle que permitem caminhos de execução mais complicados.
Uma instrução de loop nos permite executar uma instrução ou grupo de instruções várias vezes e a seguir está a forma geral de uma instrução de loop na maioria das linguagens de programação -
O MATLAB fornece os seguintes tipos de loops para lidar com os requisitos de loop. Clique nos links a seguir para verificar seus detalhes -
Sr. Não. | Tipo de Loop e Descrição |
---|---|
1 | loop while Repete uma declaração ou grupo de declarações enquanto uma determinada condição for verdadeira. Ele testa a condição antes de executar o corpo do loop. |
2 | para loop Executa uma sequência de instruções várias vezes e abrevia o código que gerencia a variável de loop. |
3 | loops aninhados Você pode usar um ou mais loops dentro de qualquer outro loop. |
Declarações de controle de loop
As instruções de controle de loop alteram a execução de sua sequência normal. Quando a execução deixa um escopo, todos os objetos automáticos que foram criados nesse escopo são destruídos.
O MATLAB suporta as seguintes instruções de controle. Clique nos links a seguir para verificar seus detalhes.
Sr. Não. | Declaração de controle e descrição |
---|---|
1 | declaração de quebra Termina o loop instrução e transfere a execução para a instrução imediatamente após o loop. |
2 | continuar declaração Faz com que o loop pule o restante de seu corpo e teste novamente sua condição imediatamente antes de reiterar. |
Um vetor é uma matriz unidimensional de números. O MATLAB permite a criação de dois tipos de vetores -
- Vetores de linha
- Vetores coluna
Vetores de linha
Row vectors são criados colocando o conjunto de elementos entre colchetes, usando espaço ou vírgula para delimitar os elementos.
r = [7 8 9 10 11]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
r =
7 8 9 10 11
Vetores de coluna
Column vectors são criados colocando o conjunto de elementos entre colchetes, usando ponto e vírgula para delimitar os elementos.
c = [7; 8; 9; 10; 11]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
c =
7
8
9
10
11
Referenciando os Elementos de um Vetor
Você pode fazer referência a um ou mais elementos de um vetor de várias maneiras. O i ésimo componente de um vetor v é referido como v (i). Por exemplo -
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(3)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 3
Quando você faz referência a um vetor com dois pontos, como v (:), todos os componentes do vetor são listados.
v = [ 1; 2; 3; 4; 5; 6]; % creating a column vector of 6 elements
v(:)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
1
2
3
4
5
6
O MATLAB permite que você selecione uma gama de elementos de um vetor.
Por exemplo, vamos criar um vetor de linha rv de 9 elementos, então faremos referência aos elementos 3 a 7 escrevendorv(3:7)e crie um novo vetor denominado sub_rv .
rv = [1 2 3 4 5 6 7 8 9];
sub_rv = rv(3:7)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
sub_rv =
3 4 5 6 7
Operações de vetor
Nesta seção, vamos discutir as seguintes operações vetoriais -
Adição e subtração de vetores
Multiplicação escalar de vetores
Transposição de um vetor
Incluindo Vetores
Magnitude de um vetor
Produto interno vetorial
Vetores com Elementos Uniformemente Espaçados
Uma matriz é uma matriz bidimensional de números.
No MATLAB, você cria uma matriz inserindo elementos em cada linha como vírgulas ou números delimitados por espaço e usando ponto-e-vírgula para marcar o final de cada linha.
Por exemplo, vamos criar uma matriz 4 por 5 a -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
Referenciando os Elementos de uma Matriz
Para fazer referência a um elemento na enésima linha enésima coluna, de uma matriz mx , escrevemos -
mx(m, n);
Por exemplo, para se referir ao elemento na 2 ª linha e 5 ª coluna, da matriz de um , como criado na última seção, digite -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(2,5)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 6
Para fazer referência a todos os elementos na m- ésima coluna, digitamos A (:, m).
Vamos criar um vetor coluna v, a partir dos elementos da 4ª linha da matriz a -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
v = a(:,4)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
v =
4
5
6
7
Você também pode selecionar os elementos na m th a n th colunas, para este write nós -
a(:,m:n)
Vamos criar uma matriz menor tomando os elementos da segunda e terceira colunas -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
2 3
3 4
4 5
5 6
Da mesma forma, você pode criar uma submatriz tomando uma subparte de uma matriz.
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
2 3
3 4
4 5
5 6
Da mesma forma, você pode criar uma submatriz tomando uma subparte de uma matriz.
Por exemplo, vamos criar uma submatriz sa tomando a subparte interna de a -
3 4 5
4 5 6
Para fazer isso, escreva -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
sa = a(2:3,2:4)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
sa =
3 4 5
4 5 6
Excluindo uma linha ou coluna em uma matriz
Você pode excluir uma linha ou coluna inteira de uma matriz atribuindo um conjunto vazio de colchetes [] a essa linha ou coluna. Basicamente, [] denota uma matriz vazia.
Por exemplo, vamos deletar a quarta linha de um -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a( 4 , : ) = []
O MATLAB executará a instrução acima e retornará o seguinte resultado -
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
A seguir, vamos deletar a quinta coluna de um -
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(: , 5)=[]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
a =
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
Exemplo
Neste exemplo, vamos criar uma matriz 3 por 3 m, então copiaremos a segunda e a terceira linhas desta matriz duas vezes para criar uma matriz 4 por 3.
Crie um arquivo de script com o seguinte código -
a = [ 1 2 3 ; 4 5 6; 7 8 9];
new_mat = a([2,3,2,3],:)
Quando você executa o arquivo, ele exibe o seguinte resultado -
new_mat =
4 5 6
7 8 9
4 5 6
7 8 9
Operações Matrix
Nesta seção, vamos discutir as seguintes operações de matriz básicas e comumente usadas -
Adição e subtração de matrizes
Divisão de Matrizes
Operações escalares de matrizes
Transpor uma matriz
Matrizes de concatenação
Multiplicação da matriz
Determinante de uma Matriz
Inverso de uma Matriz
Todas as variáveis de todos os tipos de dados no MATLAB são matrizes multidimensionais. Um vetor é uma matriz unidimensional e uma matriz é uma matriz bidimensional.
Já discutimos vetores e matrizes. Neste capítulo, discutiremos matrizes multidimensionais. No entanto, antes disso, vamos discutir alguns tipos especiais de arrays.
Matrizes especiais em MATLAB
Nesta seção, discutiremos algumas funções que criam alguns arrays especiais. Para todas essas funções, um único argumento cria uma matriz quadrada, os argumentos duplos criam uma matriz retangular.
o zeros() função cria uma matriz de todos os zeros -
Por exemplo -
zeros(5)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
o ones() função cria uma matriz de todos -
Por exemplo -
ones(4,3)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
1 1 1
1 1 1
1 1 1
1 1 1
o eye() função cria uma matriz de identidade.
Por exemplo -
eye(4)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
o rand() função cria uma matriz de números aleatórios uniformemente distribuídos em (0,1) -
Por exemplo -
rand(3, 5)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
0.8147 0.9134 0.2785 0.9649 0.9572
0.9058 0.6324 0.5469 0.1576 0.4854
0.1270 0.0975 0.9575 0.9706 0.8003
Um quadrado mágico
UMA magic square é um quadrado que produz a mesma soma, quando seus elementos são somados em linha, coluna ou diagonalmente.
o magic()função cria uma matriz quadrada mágica. É necessário um argumento singular que fornece o tamanho do quadrado. O argumento deve ser um escalar maior ou igual a 3.
magic(4)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Matrizes multidimensionais
Uma matriz com mais de duas dimensões é chamada de matriz multidimensional no MATLAB. Matrizes multidimensionais no MATLAB são uma extensão da matriz bidimensional normal.
Geralmente, para gerar uma matriz multidimensional, primeiro criamos uma matriz bidimensional e a estendemos.
Por exemplo, vamos criar um array bidimensional a.
a = [7 9 5; 6 1 9; 4 3 2]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
a =
7 9 5
6 1 9
4 3 2
A matriz a é uma matriz de 3 por 3; podemos adicionar uma terceira dimensão a a , fornecendo valores como -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
O MATLAB executará a instrução acima e retornará o seguinte resultado -
a =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
1 2 3
4 5 6
7 8 9
Também podemos criar arrays multidimensionais usando as funções uns (), zeros () ou rand ().
Por exemplo,
b = rand(4,3,2)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
b(:,:,1) =
0.0344 0.7952 0.6463
0.4387 0.1869 0.7094
0.3816 0.4898 0.7547
0.7655 0.4456 0.2760
b(:,:,2) =
0.6797 0.4984 0.2238
0.6551 0.9597 0.7513
0.1626 0.3404 0.2551
0.1190 0.5853 0.5060
Também podemos usar o cat()função para construir arrays multidimensionais. Ele concatena uma lista de matrizes ao longo de uma dimensão especificada -
A sintaxe para a função cat () é -
B = cat(dim, A1, A2...)
Onde,
B é a nova matriz criada
A1 , A2 , ... são as matrizes a serem concatenadas
dim é a dimensão ao longo da qual concatenar as matrizes
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Quando você executa o arquivo, ele exibe -
c(:,:,1) =
9 8 7
6 5 4
3 2 1
c(:,:,2) =
1 2 3
4 5 6
7 8 9
c(:,:,3) =
2 3 1
4 7 8
3 9 0
Funções de matriz
O MATLAB fornece as seguintes funções para classificar, girar, permutar, remodelar ou mudar o conteúdo da matriz.
Função | Objetivo |
---|---|
comprimento | Comprimento do vetor ou maior dimensão da matriz |
ndims | Número de dimensões da matriz |
numel | Número de elementos da matriz |
Tamanho | Dimensões da matriz |
iscolumn | Determina se a entrada é um vetor de coluna |
está vazia | Determina se a matriz está vazia |
ismatriz | Determina se a entrada é uma matriz |
Isrow | Determina se a entrada é um vetor linha |
isscalar | Determina se a entrada é escalar |
isvetor | Determina se a entrada é um vetor |
blkdiag | Constrói matriz diagonal de bloco a partir de argumentos de entrada |
circshift | Muda a matriz circularmente |
transpor | Transposição de conjugado complexo |
diag | Matrizes diagonais e diagonais da matriz |
flipdim | Inverte a matriz ao longo da dimensão especificada |
fliplr | Inverte a matriz da esquerda para a direita |
flipud | Inverte a matriz de cima para baixo |
ipermute | Inversa dimensões de permuta de matriz ND |
permutar | Reorganiza as dimensões da matriz ND |
repmat | Replicações e matriz de blocos |
remodelar | Remodela a matriz |
rot90 | Roda a matriz 90 graus |
shiftdim | Dimensões de deslocamento |
ordenado | Determina se os elementos do conjunto estão em ordem de classificação |
ordenar | Classifica os elementos da matriz em ordem crescente ou decrescente |
sortrows | Classifica as linhas em ordem crescente |
aperto | Remove dimensões singleton |
transpor | Transpor |
vetorizar | Vectoriza a expressão |
Exemplos
Os exemplos a seguir ilustram algumas das funções mencionadas acima.
Length, Dimension and Number of elements −
Crie um arquivo de script e digite o seguinte código nele -
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x) % length of x vector
y = rand(3, 4, 5, 2);
ndims(y) % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s) % no of elements in s
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans = 8
ans = 4
ans = 23
Circular Shifting of the Array Elements −
Crie um arquivo de script e digite o seguinte código nele -
a = [1 2 3; 4 5 6; 7 8 9] % the original array a
b = circshift(a,1) % circular shift first dimension values down by 1.
c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1
% and second dimension values to the left % by 1.
Quando você executa o arquivo, ele exibe o seguinte resultado -
a =
1 2 3
4 5 6
7 8 9
b =
7 8 9
1 2 3
4 5 6
c =
8 9 7
2 3 1
5 6 4
Classificando matrizes
Crie um arquivo de script e digite o seguinte código nele -
v = [ 23 45 12 9 5 0 19 17] % horizontal vector
sort(v) % sorting v
m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array
sort(m, 1) % sorting m along the row
sort(m, 2) % sorting m along the column
Quando você executa o arquivo, ele exibe o seguinte resultado -
v =
23 45 12 9 5 0 19 17
ans =
0 5 9 12 17 19 23 45
m =
2 6 4
5 3 9
2 0 1
ans =
2 0 1
2 3 4
5 6 9
ans =
2 4 6
3 5 9
0 1 2
Matriz de Células
Matrizes de células são matrizes de células indexadas em que cada célula pode armazenar uma matriz de dimensões e tipos de dados diferentes.
o cellfunção é usada para criar uma matriz de células. A sintaxe para a função da célula é -
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
Onde,
C é a matriz de células;
dim é um inteiro escalar ou vetor de inteiros que especifica as dimensões da matriz de células C;
dim1, ..., dimN são inteiros escalares que especificam as dimensões de C;
obj é um dos seguintes -
- Array ou objeto Java
- Matriz .NET do tipo System.String ou System.Object
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Quando você executa o arquivo, ele exibe o seguinte resultado -
c =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
[1,3] = Green
[2,3] = 3
[1,4] = Yellow
[2,4] = 4
[1,5] = White
[2,5] = 5
}
Acessando dados em matrizes de células
Existem duas maneiras de se referir aos elementos de uma matriz de células -
- Fechando os índices no primeiro colchete (), para se referir a conjuntos de células
- Colocando os índices entre colchetes {}, para se referir aos dados dentro das células individuais
Quando você coloca os índices no primeiro colchete, eles se referem ao conjunto de células.
Os índices de matriz de células entre parênteses suaves referem-se a conjuntos de células.
Por exemplo -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
Você também pode acessar o conteúdo das células indexando com chaves.
Por exemplo -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = Blue
ans = Green
ans = Yellow
o colon(:)é um dos operadores mais úteis do MATLAB. É usado para criar vetores, matrizes de subscrito especify for iterations.
Se você deseja criar um vetor linha, contendo inteiros de 1 a 10, você escreve -
1:10
O MATLAB executa a instrução e retorna um vetor linha contendo os inteiros de 1 a 10 -
ans =
1 2 3 4 5 6 7 8 9 10
Se você deseja especificar um valor de incremento diferente de um, por exemplo -
100: -5: 50
O MATLAB executa a instrução e retorna o seguinte resultado -
ans =
100 95 90 85 80 75 70 65 60 55 50
Vejamos outro exemplo -
0:pi/8:pi
O MATLAB executa a instrução e retorna o seguinte resultado -
ans =
Columns 1 through 7
0 0.3927 0.7854 1.1781 1.5708 1.9635 2.3562
Columns 8 through 9
2.7489 3.1416
Você pode usar o operador de dois pontos para criar um vetor de índices para selecionar linhas, colunas ou elementos de matrizes.
A tabela a seguir descreve seu uso para este propósito (vamos ter uma matriz A) -
Formato | Objetivo |
---|---|
A(:,j) | é a jª coluna de A. |
A(i,:) | é a iésima linha de A. |
A(:,:) | é a matriz bidimensional equivalente. Para matrizes, é igual a A. |
A(j:k) | é A (j), A (j + 1), ..., A (k). |
A(:,j:k) | é A (:, j), A (:, j + 1), ..., A (:, k). |
A(:,:,k) | é a k ésima página da matriz tridimensional A. |
A(i,j,k,:) | é um vetor em uma matriz quadridimensional A. O vetor inclui A (i, j, k, 1), A (i, j, k, 2), A (i, j, k, 3) e assim por diante. |
A(:) | são todos os elementos de A, considerados como uma única coluna. No lado esquerdo de uma instrução de atribuição, A (:) preenche A, preservando sua forma anterior. Nesse caso, o lado direito deve conter o mesmo número de elementos que A. |
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
A = [1 2 3 4; 4 5 6 7; 7 8 9 10]
A(:,2) % second column of A
A(:,2:3) % second and third column of A
A(2:3,2:3) % second and third rows and second and third columns
Quando você executa o arquivo, ele exibe o seguinte resultado -
A =
1 2 3 4
4 5 6 7
7 8 9 10
ans =
2
5
8
ans =
2 3
5 6
8 9
ans =
5 6
8 9
O MATLAB suporta várias classes numéricas que incluem inteiros com sinal e sem sinal e números de ponto flutuante de precisão simples e dupla. Por padrão, o MATLAB armazena todos os valores numéricos como números de ponto flutuante de precisão dupla.
Você pode escolher armazenar qualquer número ou matriz de números como inteiros ou como números de precisão simples.
Todos os tipos numéricos suportam operações básicas de array e operações matemáticas.
Conversão para vários tipos de dados numéricos
O MATLAB fornece as seguintes funções para converter em vários tipos de dados numéricos -
Função | Objetivo |
---|---|
em dobro | Converte em número de precisão dupla |
solteiro | Converte em número de precisão simples |
int8 | Converte em inteiro assinado de 8 bits |
int16 | Converte em inteiro assinado de 16 bits |
int32 | Converte em inteiro assinado de 32 bits |
int64 | Converte em inteiro assinado de 64 bits |
uint8 | Converte em inteiro sem sinal de 8 bits |
uint16 | Converte em inteiro não assinado de 16 bits |
uint32 | Converte em inteiro sem sinal de 32 bits |
uint64 | Converte em inteiro sem sinal de 64 bits |
Exemplo
Crie um arquivo de script e digite o seguinte código -
x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
Quando você executa o arquivo, ele mostra o seguinte resultado -
x =
39.900 26.025 47.100
x =
39.900 26.025 47.100
x =
38 23 45
x =
38 23 45
x =
38 23 45
x =
38 23 45
Exemplo
Vamos estender o exemplo anterior um pouco mais. Crie um arquivo de script e digite o seguinte código -
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)
Quando você executa o arquivo, ele mostra o seguinte resultado -
x =
38 23 45
x =
38 23 45
x =
{
[1,1] = 38
[1,2] = 23
[1,3] = 45
}
Inteiros menores e maiores
As funções intmax() e intmin() retorna os valores máximo e mínimo que podem ser representados com todos os tipos de números inteiros.
Ambas as funções usam o tipo de dados inteiro como argumento, por exemplo, intmax (int8) ou intmin (int64) e retornam os valores máximo e mínimo que você pode representar com o tipo de dados inteiro.
Exemplo
O exemplo a seguir ilustra como obter o menor e o maior valor de inteiros. Crie um arquivo de script e escreva o seguinte código nele -
% displaying the smallest and largest signed integer data
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:\n\t%d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:\n\t%d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:\n\t%d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:\n\t%d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:\n\t%d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:\n\t%d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:\n\t%d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))
Quando você executa o arquivo, ele mostra o seguinte resultado -
ans = The range for int8 is:
-128 to 127
ans = The range for int16 is:
-32768 to 32767
ans = The range for int32 is:
-2147483648 to 2147483647
ans = The range for int64 is:
0 to 0
ans = The range for uint8 is:
0 to 255
ans = The range for uint16 is:
0 to 65535
ans = The range for uint32 is:
0 to -1
ans = The range for uint64 is:
0 to 18446744073709551616
Números de ponto flutuante menores e maiores
As funções realmax() e realmin() retorna os valores máximo e mínimo que podem ser representados com números de ponto flutuante.
Ambas as funções, quando chamadas com o argumento 'único', retornam os valores máximo e mínimo que você pode representar com o tipo de dados de precisão simples e quando chamadas com o argumento 'duplo', retornam os valores máximo e mínimo que você pode representar com o tipo de dados de precisão dupla.
Exemplo
O exemplo a seguir ilustra como obter os menores e maiores números de ponto flutuante. Crie um arquivo de script e escreva o seguinte código nele -
% displaying the smallest and largest single-precision
% floating point number
str = 'The range for single is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
realmin('single'), realmax('single'))
% displaying the smallest and largest double-precision
% floating point number
str = 'The range for double is:\n\t%g to %g and\n\t %g to %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
realmin('double'), realmax('double'))
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans = The range for single is:
-3.40282e+38 to -1.17549e-38 and
1.17549e-38 to 3.40282e+38
ans = The range for double is:
-1.79769e+308 to -2.22507e-308 and
2.22507e-308 to 1.79769e+308
Criar uma string de caracteres é bastante simples no MATLAB. Na verdade, já o usamos muitas vezes. Por exemplo, você digita o seguinte no prompt de comando -
my_string = 'Tutorials Point'
O MATLAB executará a instrução acima e retornará o seguinte resultado -
my_string = Tutorials Point
O MATLAB considera todas as variáveis como arrays e as strings são consideradas arrays de caracteres. Vamos usar owhos comando para verificar a variável criada acima -
whos
O MATLAB executará a instrução acima e retornará o seguinte resultado -
Name Size Bytes Class Attributes
my_string 1x16 32 char
Curiosamente, você pode usar funções de conversão numérica como uint8 ou uint16para converter os caracteres da string em seus códigos numéricos. ochar função converte o vetor inteiro de volta em caracteres -
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
Quando você executa o arquivo, ele exibe o seguinte resultado -
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
Matriz Retangular de Caracteres
As strings que discutimos até agora são matrizes de caracteres unidimensionais; no entanto, precisamos armazenar mais do que isso. Precisamos armazenar mais dados textuais dimensionais em nosso programa. Isso é obtido através da criação de matrizes de caracteres retangulares.
A maneira mais simples de criar uma matriz de caracteres retangular é concatenando duas ou mais matrizes de caracteres unidimensionais, vertical ou horizontalmente, conforme necessário.
Você pode combinar strings verticalmente de uma das seguintes maneiras -
Usando o operador de concatenação MATLAB []e separando cada linha com um ponto e vírgula (;). Observe que neste método cada linha deve conter o mesmo número de caracteres. Para strings com comprimentos diferentes, você deve preencher com caracteres de espaço conforme necessário.
Usando o charfunção. Se as strings forem de comprimentos diferentes, char preenche as strings mais curtas com espaços em branco à direita para que cada linha tenha o mesmo número de caracteres.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
Quando você executa o arquivo, ele exibe o seguinte resultado -
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
Você pode combinar strings horizontalmente de uma das seguintes maneiras -
Usando o operador de concatenação MATLAB, []e separar as strings de entrada com uma vírgula ou um espaço. Este método preserva todos os espaços finais nas matrizes de entrada.
Usando a função de concatenação de string, strcat. Este método remove espaços à direita nas entradas.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
Quando você executa o arquivo, ele exibe o seguinte resultado -
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Combinando Strings em uma Matriz Celular
De nossa discussão anterior, está claro que combinar strings com comprimentos diferentes pode ser uma dor, já que todas as strings no array têm que ter o mesmo comprimento. Usamos espaços em branco no final das strings para equalizar seu comprimento.
No entanto, uma maneira mais eficiente de combinar as strings é converter a matriz resultante em uma matriz de células.
A matriz de células do MATLAB pode conter diferentes tamanhos e tipos de dados em uma matriz. Matrizes de células fornecem uma maneira mais flexível de armazenar strings de comprimento variável.
o cellstr função converte uma matriz de caracteres em uma matriz de células de strings.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
Quando você executa o arquivo, ele exibe o seguinte resultado -
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
Funções de string no MATLAB
O MATLAB fornece várias funções de string criando, combinando, analisando, comparando e manipulando strings.
A tabela a seguir fornece uma breve descrição das funções de string no MATLAB -
Função | Objetivo |
---|---|
Funções para armazenar texto em matrizes de caracteres, combinar matrizes de caracteres, etc. | |
espaços em branco | Crie uma sequência de caracteres em branco |
cellstr | Crie uma matriz de células de strings a partir da matriz de caracteres |
Caracteres | Converter para matriz de caracteres (string) |
iscellstr | Determine se a entrada é uma matriz de células de strings |
ischar | Determine se o item é uma matriz de caracteres |
sprintf | Formatar dados em string |
strcat | Concatenar strings horizontalmente |
strjoin | Junte strings na matriz de células em uma única string |
Funções para identificar partes de strings, localizar e substituir substrings | |
ischar | Determine se o item é uma matriz de caracteres |
isletter | Elementos da matriz que são letras alfabéticas |
isspace | Elementos de matriz que são caracteres de espaço |
isstrprop | Determine se a string pertence à categoria especificada |
sscanf | Leia os dados formatados da string |
strfind | Encontre uma string dentro de outra |
strrep | Encontrar e substituir substring |
strsplit | Dividir string no delimitador especificado |
Strtok | Partes selecionadas da corda |
validatestring | Verifique a validade da string de texto |
Symvar | Determine variáveis simbólicas na expressão |
regexp | Corresponder à expressão regular (diferencia maiúsculas de minúsculas) |
regexpi | Corresponder à expressão regular (não diferencia maiúsculas de minúsculas) |
regexprep | Substitua a string usando uma expressão regular |
regexptranslate | Traduzir string em expressão regular |
Funções para comparação de strings | |
strcmp | Compare strings (diferencia maiúsculas de minúsculas) |
strcmpi | Compare strings (não diferencia maiúsculas de minúsculas) |
strncmp | Compare os primeiros n caracteres de strings (diferencia maiúsculas de minúsculas) |
strncmpi | Compare os primeiros n caracteres de strings (não diferencia maiúsculas de minúsculas) |
Funções para alterar a string para maiúsculas ou minúsculas, criando ou removendo espaços em branco | |
esvaziar | Retire os espaços em branco à direita do final da string |
strtrim | Remova o espaço em branco à esquerda e à direita da string |
mais baixo | Converter string em minúsculas |
superior | Converter string em maiúsculas |
strjust | Justificar matriz de caracteres |
Exemplos
Os exemplos a seguir ilustram algumas das funções de string mencionadas acima -
Formatando Strings
Crie um arquivo de script e digite o seguinte código nele -
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
Unindo Strings
Crie um arquivo de script e digite o seguinte código nele -
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
Quando você executa o arquivo, ele exibe o seguinte resultado -
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
Localizando e Substituindo Strings
Crie um arquivo de script e digite o seguinte código nele -
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
Quando você executa o arquivo, ele exibe o seguinte resultado -
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
Comparando Strings
Crie um arquivo de script e digite o seguinte código nele -
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
Quando você executa o arquivo, ele exibe o seguinte resultado -
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal
Uma função é um grupo de instruções que, juntas, executam uma tarefa. No MATLAB, as funções são definidas em arquivos separados. O nome do arquivo e da função deve ser o mesmo.
As funções operam em variáveis dentro de seu próprio espaço de trabalho, que também é chamado de local workspace, separado do espaço de trabalho que você acessa no prompt de comando do MATLAB, que é chamado de base workspace.
As funções podem aceitar mais de um argumento de entrada e podem retornar mais de um argumento de saída.
A sintaxe de uma declaração de função é -
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
Exemplo
A seguinte função chamada mymax deve ser escrita em um arquivo chamado mymax.m . Leva cinco números como argumento e retorna o máximo dos números.
Crie um arquivo de função, denominado mymax.m, e digite o seguinte código nele -
function max = mymax(n1, n2, n3, n4, n5)
%This function calculates the maximum of the
% five numbers given as input
max = n1;
if(n2 > max)
max = n2;
end
if(n3 > max)
max = n3;
end
if(n4 > max)
max = n4;
end
if(n5 > max)
max = n5;
end
A primeira linha de uma função começa com a palavra-chave function. Fornece o nome da função e a ordem dos argumentos. Em nosso exemplo, a função mymax tem cinco argumentos de entrada e um argumento de saída.
As linhas de comentário que vêm logo após a instrução da função fornecem o texto de ajuda. Essas linhas são impressas quando você digita -
help mymax
O MATLAB executará a instrução acima e retornará o seguinte resultado -
This function calculates the maximum of the
five numbers given as input
Você pode chamar a função como -
mymax(34, 78, 89, 23, 11)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 89
Funções anônimas
Uma função anônima é como uma função embutida em linguagens de programação tradicionais, definida em uma única instrução MATLAB. Consiste em uma única expressão MATLAB e qualquer número de argumentos de entrada e saída.
Você pode definir uma função anônima diretamente na linha de comando do MATLAB ou em uma função ou script.
Desta forma, você pode criar funções simples sem ter que criar um arquivo para elas.
A sintaxe para criar uma função anônima a partir de uma expressão é
f = @(arglist)expression
Exemplo
Neste exemplo, escreveremos uma função anônima chamada potência, que receberá dois números como entrada e retornará o primeiro número elevado à potência do segundo número.
Crie um arquivo de script e digite o seguinte código nele -
power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)
Quando você executa o arquivo, ele exibe -
result1 = 343
result2 = 7
result3 = 1.0000e-10
result4 = 9.5459
Primária e Subfunções
Qualquer função diferente de uma função anônima deve ser definida em um arquivo. Cada arquivo de função contém uma função primária necessária que aparece primeiro e qualquer número de subfunções opcionais que vêm depois da função primária e são usadas por ela.
As funções primárias podem ser chamadas de fora do arquivo que as define, seja da linha de comando ou de outras funções, mas as subfunções não podem ser chamadas da linha de comando ou de outras funções, fora do arquivo de função.
As subfunções são visíveis apenas para a função primária e outras subfunções dentro do arquivo de função que as define.
Exemplo
Vamos escrever uma função chamada quadrática que calcularia as raízes de uma equação quadrática. A função teria três entradas, o coeficiente quadrático, o coeficiente linear e o termo constante. Ele devolveria as raízes.
O arquivo de função quadratic.m conterá a função primária quadrática e o disco de subfunção , que calcula o discriminante.
Crie um arquivo de função quadratic.m e digite o seguinte código nele -
function [x1,x2] = quadratic(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function
Você pode chamar a função acima no prompt de comando como -
quadratic(2,4,-4)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 0.7321
Funções Aninhadas
Você pode definir funções dentro do corpo de outra função. Elas são chamadas de funções aninhadas. Uma função aninhada contém qualquer um ou todos os componentes de qualquer outra função.
As funções aninhadas são definidas dentro do escopo de outra função e compartilham o acesso ao espaço de trabalho da função contida.
Uma função aninhada segue a seguinte sintaxe -
function x = A(p1, p2)
...
B(p2)
function y = B(p3)
...
end
...
end
Exemplo
Vamos reescrever a função quadrática , do exemplo anterior, entretanto, desta vez a função de disco será uma função aninhada.
Crie um arquivo de função quadratic2.m e digite o seguinte código nele -
function [x1,x2] = quadratic2(a,b,c)
function disc % nested function
d = sqrt(b^2 - 4*a*c);
end % end of function disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of function quadratic2
Você pode chamar a função acima no prompt de comando como -
quadratic2(2,4,-4)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 0.73205
Funções Privadas
Uma função privada é uma função primária que é visível apenas para um grupo limitado de outras funções. Se você não quiser expor a implementação de uma (s) função (ões), pode criá-las como funções privadas.
As funções privadas residem em subfolders com o nome especial private.
Eles são visíveis apenas para funções na pasta pai.
Exemplo
Vamos reescrever a função quadrática . Desta vez, porém, a função de disco que calcula o discriminante será uma função privada.
Crie uma subpasta chamada private no diretório de trabalho. Armazene o seguinte arquivo de função disc.m nele -
function dis = disc(a,b,c)
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end % end of sub-function
Crie uma função quadratic3.m em seu diretório de trabalho e digite o seguinte código nela -
function [x1,x2] = quadratic3(a,b,c)
%this function returns the roots of
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the
%constant term
% It returns the roots
d = disc(a,b,c);
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end % end of quadratic3
Você pode chamar a função acima no prompt de comando como -
quadratic3(2,4,-4)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans = 0.73205
Variáveis globais
Variáveis globais podem ser compartilhadas por mais de uma função. Para isso, você precisa declarar a variável como global em todas as funções.
Se você deseja acessar essa variável a partir do espaço de trabalho básico, declare a variável na linha de comando.
A declaração global deve ocorrer antes que a variável seja realmente usada em uma função. É uma boa prática usar letras maiúsculas nos nomes das variáveis globais para distingui-las de outras variáveis.
Exemplo
Vamos criar um arquivo de função denominado average.m e digitar o seguinte código nele -
function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end
Crie um arquivo de script e digite o seguinte código nele -
global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)
Quando você executa o arquivo, ele exibe o seguinte resultado -
av = 35.500
Importar dados no MATLAB significa carregar dados de um arquivo externo. oimportdatafunção permite carregar vários arquivos de dados de diferentes formatos. Possui os seguintes cinco formulários -
Sr. Não. | Descrição da função |
---|---|
1 | A = importdata(filename) Carrega dados na matriz A do arquivo indicado por nome de arquivo . |
2 | A = importdata('-pastespecial') Carrega dados da área de transferência do sistema em vez de um arquivo. |
3 | A = importdata(___, delimiterIn) Interpreta delimiterIn como o separador de coluna no arquivo ASCII, nome do arquivo ou dados da área de transferência. Você pode usar delimiterIn com qualquer um dos argumentos de entrada nas sintaxes acima. |
4 | A = importdata(___, delimiterIn, headerlinesIn) Carrega dados de um arquivo ASCII, nome do arquivo ou área de transferência, lendo dados numéricos a partir de headerlinesIn + 1 . |
5 | [A, delimiterOut, headerlinesOut] = importdata(___) Retorna o caractere delimitador detectado para o arquivo ASCII de entrada em delimiterOut e o número detectado de linhas de cabeçalho em headerlinesOut , usando qualquer um dos argumentos de entrada nas sintaxes anteriores. |
Por padrão, o Octave não tem suporte para a função importdata () , então você terá que pesquisar e instalar este pacote para que os exemplos a seguir funcionem com sua instalação do Octave.
Exemplo 1
Vamos carregar e exibir um arquivo de imagem. Crie um arquivo de script e digite o seguinte código nele -
filename = 'smile.jpg';
A = importdata(filename);
image(A);
Quando você executa o arquivo, o MATLAB exibe o arquivo de imagem. No entanto, você deve armazená-lo no diretório atual.
Exemplo 2
Neste exemplo, importamos um arquivo de texto e especificamos Delimitador e Cabeçalho da Coluna. Vamos criar um arquivo ASCII delimitado por espaço com cabeçalhos de coluna, chamado Weeklydata.txt .
Nosso arquivo de texto Weeklydata.txt se parece com isto -
SunDay MonDay TuesDay WednesDay ThursDay FriDay SaturDay
95.01 76.21 61.54 40.57 55.79 70.28 81.53
73.11 45.65 79.19 93.55 75.29 69.87 74.68
60.68 41.85 92.18 91.69 81.32 90.38 74.51
48.60 82.14 73.82 41.03 0.99 67.22 93.18
89.13 44.47 57.63 89.36 13.89 19.88 46.60
Crie um arquivo de script e digite o seguinte código nele -
filename = 'weeklydata.txt';
delimiterIn = ' ';
headerlinesIn = 1;
A = importdata(filename,delimiterIn,headerlinesIn);
% View data
for k = [1:7]
disp(A.colheaders{1, k})
disp(A.data(:, k))
disp(' ')
end
Quando você executa o arquivo, ele exibe o seguinte resultado -
SunDay
95.0100
73.1100
60.6800
48.6000
89.1300
MonDay
76.2100
45.6500
41.8500
82.1400
44.4700
TuesDay
61.5400
79.1900
92.1800
73.8200
57.6300
WednesDay
40.5700
93.5500
91.6900
41.0300
89.3600
ThursDay
55.7900
75.2900
81.3200
0.9900
13.8900
FriDay
70.2800
69.8700
90.3800
67.2200
19.8800
SaturDay
81.5300
74.6800
74.5100
93.1800
46.6000
Exemplo 3
Neste exemplo, vamos importar dados da área de transferência.
Copie as seguintes linhas para a área de transferência -
Mathematics is simple
Crie um arquivo de script e digite o seguinte código -
A = importdata('-pastespecial')
Quando você executa o arquivo, ele exibe o seguinte resultado -
A =
'Mathematics is simple'
E / S de arquivo de baixo nível
A função importdata é uma função de alto nível. As funções de E / S de arquivo de baixo nível no MATLAB permitem o máximo controle sobre a leitura ou gravação de dados em um arquivo. No entanto, essas funções precisam de informações mais detalhadas sobre o arquivo para funcionar de maneira eficiente.
O MATLAB fornece as seguintes funções para operações de leitura e gravação no nível de byte ou caractere -
Função | Descrição |
---|---|
fclose | Feche um ou todos os arquivos abertos |
feof | Teste de fim de arquivo |
Ferror | Informações sobre erros de E / S de arquivo |
fgetl | Leia a linha do arquivo, removendo caracteres de nova linha |
fgets | Leia a linha do arquivo, mantendo os caracteres de nova linha |
fopen | Abra o arquivo ou obtenha informações sobre os arquivos abertos |
fprintf | Grave dados em arquivo de texto |
fread | Leia os dados do arquivo binário |
Frewind | Mova o indicador de posição do arquivo para o início do arquivo aberto |
fscanf | Leia os dados do arquivo de texto |
fseek | Mover para a posição especificada no arquivo |
ftell | Posição no arquivo aberto |
fwrite | Grave dados em arquivo binário |
Importar arquivos de dados de texto com E / S de baixo nível
O MATLAB fornece as seguintes funções para importação de baixo nível de arquivos de dados de texto -
o fscanf função lê dados formatados em um texto ou arquivo ASCII.
o fgetl e fgets funções lêem uma linha de um arquivo por vez, onde um caractere de nova linha separa cada linha.
o fread função lê um fluxo de dados no nível de byte ou bit.
Exemplo
Temos um arquivo de dados de texto 'myfile.txt' salvo em nosso diretório de trabalho. O arquivo armazena dados de precipitação por três meses; Junho, julho e agosto para o ano de 2012.
Os dados em myfile.txt contêm conjuntos repetidos de medições de tempo, mês e precipitação em cinco locais. Os dados do cabeçalho armazenam o número de meses M; então temos M conjuntos de medidas.
O arquivo se parece com este -
Rainfall Data
Months: June, July, August
M = 3
12:00:00
June-2012
17.21 28.52 39.78 16.55 23.67
19.15 0.35 17.57 NaN 12.01
17.92 28.49 17.40 17.06 11.09
9.59 9.33 NaN 0.31 0.23
10.46 13.17 NaN 14.89 19.33
20.97 19.50 17.65 14.45 14.00
18.23 10.34 17.95 16.46 19.34
09:10:02
July-2012
12.76 16.94 14.38 11.86 16.89
20.46 23.17 NaN 24.89 19.33
30.97 49.50 47.65 24.45 34.00
18.23 30.34 27.95 16.46 19.34
30.46 33.17 NaN 34.89 29.33
30.97 49.50 47.65 24.45 34.00
28.67 30.34 27.95 36.46 29.34
15:03:40
August-2012
17.09 16.55 19.59 17.25 19.22
17.54 11.45 13.48 22.55 24.01
NaN 21.19 25.85 25.05 27.21
26.79 24.98 12.23 16.99 18.67
17.54 11.45 13.48 22.55 24.01
NaN 21.19 25.85 25.05 27.21
26.79 24.98 12.23 16.99 18.67
Vamos importar dados deste arquivo e exibir esses dados. Execute as seguintes etapas -
Abra o arquivo com fopen função e obter o identificador do arquivo.
Descreva os dados no arquivo com format specifiers, tal como '%s'para uma string,'%d'para um número inteiro, ou'%f'para um número de ponto flutuante.
Para pular caracteres literais no arquivo, inclua-os na descrição do formato. Para pular um campo de dados, use um asterisco ('*') no especificador.
Por exemplo, para ler os cabeçalhos e retornar o valor único para M, escrevemos -
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
Por padrão, fscanflê os dados de acordo com a nossa descrição de formato até não encontrar nenhuma correspondência para os dados ou chegar ao final do arquivo. Aqui, usaremos o loop for para ler 3 conjuntos de dados e, a cada vez, ele lerá 7 linhas e 5 colunas.
Criaremos uma estrutura chamada mydata na área de trabalho para armazenar os dados lidos do arquivo. Essa estrutura tem três campos - time , month e raindata array.
Crie um arquivo de script e digite o seguinte código nele -
filename = '/data/myfile.txt';
rows = 7;
cols = 5;
% open the file
fid = fopen(filename);
% read the file headers, find M (number of months)
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
% read each set of measurements
for n = 1:M
mydata(n).time = fscanf(fid, '%s', 1);
mydata(n).month = fscanf(fid, '%s', 1);
% fscanf fills the array in column order,
% so transpose the results
mydata(n).raindata = ...
fscanf(fid, '%f', [rows, cols]);
end
for n = 1:M
disp(mydata(n).time), disp(mydata(n).month)
disp(mydata(n).raindata)
end
% close the file
fclose(fid);
Quando você executa o arquivo, ele exibe o seguinte resultado -
12:00:00
June-2012
17.2100 17.5700 11.0900 13.1700 14.4500
28.5200 NaN 9.5900 NaN 14.0000
39.7800 12.0100 9.3300 14.8900 18.2300
16.5500 17.9200 NaN 19.3300 10.3400
23.6700 28.4900 0.3100 20.9700 17.9500
19.1500 17.4000 0.2300 19.5000 16.4600
0.3500 17.0600 10.4600 17.6500 19.3400
09:10:02
July-2012
12.7600 NaN 34.0000 33.1700 24.4500
16.9400 24.8900 18.2300 NaN 34.0000
14.3800 19.3300 30.3400 34.8900 28.6700
11.8600 30.9700 27.9500 29.3300 30.3400
16.8900 49.5000 16.4600 30.9700 27.9500
20.4600 47.6500 19.3400 49.5000 36.4600
23.1700 24.4500 30.4600 47.6500 29.3400
15:03:40
August-2012
17.0900 13.4800 27.2100 11.4500 25.0500
16.5500 22.5500 26.7900 13.4800 27.2100
19.5900 24.0100 24.9800 22.5500 26.7900
17.2500 NaN 12.2300 24.0100 24.9800
19.2200 21.1900 16.9900 NaN 12.2300
17.5400 25.8500 18.6700 21.1900 16.9900
11.4500 25.0500 17.5400 25.8500 18.6700
A exportação (ou saída) de dados em MATLAB significa escrever em arquivos. O MATLAB permite que você use seus dados em outro aplicativo que lê arquivos ASCII. Para isso, o MATLAB oferece várias opções de exportação de dados.
Você pode criar os seguintes tipos de arquivos -
Arquivo de dados ASCII retangular e delimitado de uma matriz.
Arquivo de diário (ou registro) de pressionamentos de tecla e a saída de texto resultante.
Arquivo ASCII especializado usando funções de baixo nível, como fprintf.
Arquivo MEX para acessar sua rotina C / C ++ ou Fortran que grava em um formato de arquivo de texto específico.
Além disso, você também pode exportar dados para planilhas.
Existem duas maneiras de exportar uma matriz numérica como um arquivo de dados ASCII delimitado -
Usando o save função e especificando o -ascii qualificador
Usando o dlmwrite função
A sintaxe para usar a função salvar é -
save my_data.out num_array -ascii
onde my_data.out é o arquivo de dados ASCII delimitado criado, num_array é uma matriz numérica e−ascii é o especificador.
Sintaxe para usar o dlmwrite função é -
dlmwrite('my_data.out', num_array, 'dlm_char')
onde, my_data.out é o arquivo de dados ASCII delimitado criado, num_array é uma matriz numérica e dlm_char é o caractere delimitador.
Exemplo
O exemplo a seguir demonstra o conceito. Crie um arquivo de script e digite o seguinte código -
num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out
Quando você executa o arquivo, ele exibe o seguinte resultado -
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00
4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00
7.0000000e+00 8.0000000e+00 9.0000000e+00 0.0000000e+00
1 2 3 4
4 5 6 7
7 8 9 0
Observe que o comando save -ascii e a função dlmwrite não funcionam com matrizes de células como entrada. Para criar um arquivo ASCII delimitado a partir do conteúdo de uma matriz de células, você pode
Ou converta a matriz de células em uma matriz usando o cell2mat função
Ou exporte a matriz de células usando funções de E / S de arquivo de baixo nível.
Se você usar o save para gravar uma matriz de caracteres em um arquivo ASCII, ela grava o equivalente em ASCII dos caracteres no arquivo.
Por exemplo, vamos escrever a palavra 'olá' em um arquivo -
h = 'hello';
save textdata.out h -ascii
type textdata.out
O MATLAB executa as instruções acima e exibe o seguinte resultado. que são os caracteres da string 'hello' no formato ASCII de 8 dígitos.
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
Escrevendo em arquivos de diário
Arquivos de diário são registros de atividades de sua sessão do MATLAB. A função de diário cria uma cópia exata de sua sessão em um arquivo de disco, excluindo gráficos.
Para ligar a função de diário, digite -
diary
Opcionalmente, você pode fornecer o nome do arquivo de log, por exemplo -
diary logdata.out
Para desligar a função de diário -
diary off
Você pode abrir o arquivo do diário em um editor de texto.
Exportando dados para arquivos de dados de texto com E / S de baixo nível
Até agora, exportamos matrizes numéricas. No entanto, você pode precisar criar outros arquivos de texto, incluindo combinações de dados numéricos e de caracteres, arquivos de saída não retangulares ou arquivos com esquemas de codificação não ASCII. Para esses fins, o MATLAB fornece o baixo nívelfprintf função.
Como nas atividades de arquivo de E / S de baixo nível, antes de exportar, você precisa abrir ou criar um arquivo com o fopenfunção e obter o identificador do arquivo. Por padrão, fopen abre um arquivo para acesso somente leitura. Você deve especificar a permissão para escrever ou acrescentar, como 'w' ou 'a'.
Depois de processar o arquivo, você precisa fechá-lo com fclose(fid) função.
O exemplo a seguir demonstra o conceito -
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
% open a file for writing
fid = fopen('logtable.txt', 'w');
% Table Header
fprintf(fid, 'Log Function\n\n');
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f %f\n', y);
fclose(fid);
% display the file created
type logtable.txt
Quando você executa o arquivo, ele exibe o seguinte resultado -
Log Function
0.000000 -Inf
10.000000 2.302585
20.000000 2.995732
30.000000 3.401197
40.000000 3.688879
50.000000 3.912023
60.000000 4.094345
70.000000 4.248495
80.000000 4.382027
90.000000 4.499810
100.000000 4.605170
Para traçar o gráfico de uma função, você precisa seguir os seguintes passos -
Definir x, especificando o range of values para a variável x, para o qual a função deve ser traçada
Defina a função, y = f(x)
Ligar para plot comando, como plot(x, y)
O exemplo a seguir demonstraria o conceito. Deixe-nos representar graficamente a função simplesy = x para o intervalo de valores para x de 0 a 100, com um incremento de 5.
Crie um arquivo de script e digite o seguinte código -
x = [0:5:100];
y = x;
plot(x, y)
Quando você executa o arquivo, o MATLAB exibe o seguinte gráfico -
Tomemos mais um exemplo para plotar a função y = x 2 . Neste exemplo, desenharemos dois gráficos com a mesma função, mas no segundo momento, reduziremos o valor do incremento. Observe que, à medida que diminuímos o incremento, o gráfico se torna mais uniforme.
Crie um arquivo de script e digite o seguinte código -
x = [1 2 3 4 5 6 7 8 9 10];
x = [-100:20:100];
y = x.^2;
plot(x, y)
Quando você executa o arquivo, o MATLAB exibe o seguinte gráfico -
Altere um pouco o arquivo de código, reduza o incremento para 5 -
x = [-100:5:100];
y = x.^2;
plot(x, y)
MATLAB desenha um gráfico mais suave -
Adicionando título, rótulos, linhas de grade e escala no gráfico
O MATLAB permite adicionar títulos, rótulos ao longo dos eixos xey, linhas de grade e também ajustar os eixos para enfeitar o gráfico.
o xlabel e ylabel comandos geram rótulos ao longo do eixo xe do eixo y.
o title comando permite que você coloque um título no gráfico.
o grid on comando permite que você coloque as linhas de grade no gráfico.
o axis equal comando permite gerar o gráfico com os mesmos fatores de escala e os espaços em ambos os eixos.
o axis square comando gera um gráfico quadrado.
Exemplo
Crie um arquivo de script e digite o seguinte código -
x = [0:0.01:10];
y = sin(x);
plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'),
grid on, axis equal
O MATLAB gera o seguinte gráfico -
Desenho de múltiplas funções no mesmo gráfico
Você pode desenhar vários gráficos no mesmo gráfico. O exemplo a seguir demonstra o conceito -
Exemplo
Crie um arquivo de script e digite o seguinte código -
x = [0 : 0.01: 10];
y = sin(x);
g = cos(x);
plot(x, y, x, g, '.-'), legend('Sin(x)', 'Cos(x)')
O MATLAB gera o seguinte gráfico -
Definição de cores no gráfico
O MATLAB oferece oito opções básicas de cores para desenhar gráficos. A tabela a seguir mostra as cores e seus códigos -
Código | Cor |
---|---|
W | Branco |
k | Preto |
b | Azul |
r | Vermelho |
c | Ciano |
g | Verde |
m | Magenta |
y | Amarelo |
Exemplo
Vamos desenhar o gráfico de dois polinômios
f (x) = 3x 4 + 2x 3 + 7x 2 + 2x + 9 e
g (x) = 5x 3 + 9x + 2
Crie um arquivo de script e digite o seguinte código -
x = [-10 : 0.01: 10];
y = 3*x.^4 + 2 * x.^3 + 7 * x.^2 + 2 * x + 9;
g = 5 * x.^3 + 9 * x + 2;
plot(x, y, 'r', x, g, 'g')
Quando você executa o arquivo, o MATLAB gera o seguinte gráfico -
Configurando escalas de eixo
o axiscomando permite que você defina as escalas do eixo. Você pode fornecer valores mínimos e máximos para os eixos xey usando o comando de eixo da seguinte maneira -
axis ( [xmin xmax ymin ymax] )
O exemplo a seguir mostra isso -
Exemplo
Crie um arquivo de script e digite o seguinte código -
x = [0 : 0.01: 10];
y = exp(-x).* sin(2*x + 3);
plot(x, y), axis([0 10 -1 1])
Quando você executa o arquivo, o MATLAB gera o seguinte gráfico -
Gerando subtramas
Quando você cria uma matriz de plotagens na mesma figura, cada uma dessas plotagens é chamada de subtrama. osubplot comando é usado para criar subtramas.
A sintaxe do comando é -
subplot(m, n, p)
onde, m e n são o número de linhas e colunas da matriz do gráfico e p especifica onde colocar um gráfico particular.
Cada plotagem criada com o comando subplot pode ter suas próprias características. O exemplo a seguir demonstra o conceito -
Exemplo
Vamos gerar dois gráficos -
y = e −1,5x sen (10x)
y = e −2x sen (10x)
Crie um arquivo de script e digite o seguinte código -
x = [0:0.01:5];
y = exp(-1.5*x).*sin(10*x);
subplot(1,2,1)
plot(x,y), xlabel('x'),ylabel('exp(–1.5x)*sin(10x)'),axis([0 5 -1 1])
y = exp(-2*x).*sin(10*x);
subplot(1,2,2)
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1])
Quando você executa o arquivo, o MATLAB gera o seguinte gráfico -
Este capítulo continuará explorando os recursos de plotagem e gráficos do MATLAB. Vamos discutir -
- Desenho de gráficos de barras
- Desenho de contornos
- Gráficos tridimensionais
Desenho de gráficos de barras
o barcomando desenha um gráfico de barras bidimensional. Tomemos um exemplo para demonstrar a ideia.
Exemplo
Vamos ter uma sala de aula imaginária com 10 alunos. Sabemos que a porcentagem de notas obtidas por esses alunos são 75, 58, 90, 87, 50, 85, 92, 75, 60 e 95. Faremos o gráfico de barras para esses dados.
Crie um arquivo de script e digite o seguinte código -
x = [1:10];
y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
bar(x,y), xlabel('Student'),ylabel('Score'),
title('First Sem:')
print -deps graph.eps
Quando você executa o arquivo, o MATLAB exibe o seguinte gráfico de barras -
Desenho de Contornos
Uma linha de contorno de uma função de duas variáveis é uma curva ao longo da qual a função tem um valor constante. Linhas de contorno são usadas para criar mapas de contorno unindo pontos de elevação igual acima de um determinado nível, como o nível médio do mar.
O MATLAB fornece um contour função para desenhar mapas de contorno.
Exemplo
Vamos gerar um mapa de contorno que mostra as linhas de contorno para uma dada função g = f (x, y). Esta função possui duas variáveis. Portanto, teremos que gerar duas variáveis independentes, ou seja, dois conjuntos de dados x e y. Isso é feito chamando omeshgrid comando.
o meshgrid comando é usado para gerar uma matriz de elementos que fornecem o intervalo sobre xey junto com a especificação de incremento em cada caso.
Deixe-nos plotar nossa função g = f (x, y), onde −5 ≤ x ≤ 5, −3 ≤ y ≤ 3. Vamos tomar um incremento de 0,1 para ambos os valores. As variáveis são definidas como -
[x,y] = meshgrid(–5:0.1:5, –3:0.1:3);
Por último, precisamos atribuir a função. Deixe nossa função ser: x 2 + y 2
Crie um arquivo de script e digite o seguinte código -
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3); %independent variables
g = x.^2 + y.^2; % our function
contour(x,y,g) % call the contour function
print -deps graph.eps
Quando você executa o arquivo, o MATLAB exibe o seguinte mapa de contorno -
Vamos modificar o código um pouco para enfeitar o mapa
[x,y] = meshgrid(-5:0.1:5,-3:0.1:3); %independent variables
g = x.^2 + y.^2; % our function
[C, h] = contour(x,y,g); % call the contour function
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
print -deps graph.eps
Quando você executa o arquivo, o MATLAB exibe o seguinte mapa de contorno -
Gráficos tridimensionais
Os gráficos tridimensionais basicamente exibem uma superfície definida por uma função em duas variáveis, g = f (x, y).
Como antes, para definir g, primeiro criamos um conjunto de pontos (x, y) sobre o domínio da função usando o meshgridcomando. Em seguida, atribuímos a própria função. Finalmente, usamos osurf comando para criar uma plotagem de superfície.
O exemplo a seguir demonstra o conceito -
Exemplo
Vamos criar um mapa de superfície 3D para a função g = xe - (x 2 + y 2 )
Crie um arquivo de script e digite o seguinte código -
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
Quando você executa o arquivo, o MATLAB exibe o seguinte mapa 3-D -
Você também pode usar o meshcomando para gerar uma superfície tridimensional. No entanto, osurf comando exibe as linhas de conexão e as faces da superfície em cores, enquanto o mesh comando cria uma superfície wireframe com linhas coloridas conectando os pontos de definição.
Até agora, vimos que todos os exemplos funcionam no MATLAB assim como no GNU, alternativamente chamado de Octave. Mas para resolver as equações algébricas básicas, tanto o MATLAB quanto o Octave são um pouco diferentes, então tentaremos cobrir o MATLAB e o Octave em seções separadas.
Também discutiremos a fatoração e a simplificação de expressões algébricas.
Resolvendo Equações Algébricas Básicas no MATLAB
o solvefunção é usada para resolver equações algébricas. Em sua forma mais simples, a função solve leva a equação entre aspas como um argumento.
Por exemplo, vamos resolver para x na equação x-5 = 0
solve('x-5=0')
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
5
Você também pode chamar a função resolver como -
y = solve('x-5 = 0')
O MATLAB executará a instrução acima e retornará o seguinte resultado -
y =
5
Você pode até não incluir o lado direito da equação -
solve('x-5')
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
5
Se a equação envolver vários símbolos, o MATLAB por padrão assume que você está resolvendo para x, no entanto, a função de resolução tem outra forma -
solve(equation, variable)
onde, você também pode mencionar a variável.
Por exemplo, vamos resolver a equação v - u - 3t 2 = 0, para v. Neste caso, devemos escrever -
solve('v-u-3*t^2=0', 'v')
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
3*t^2 + u
Resolvendo Equações Algébricas Básicas em Oitava
o roots função é usada para resolver equações algébricas no Octave e você pode escrever os exemplos acima da seguinte maneira -
Por exemplo, vamos resolver para x na equação x-5 = 0
roots([1, -5])
O Octave irá executar a instrução acima e retornar o seguinte resultado -
ans = 5
Você também pode chamar a função resolver como -
y = roots([1, -5])
O Octave irá executar a instrução acima e retornar o seguinte resultado -
y = 5
Resolvendo Equações Quadráticas no MATLAB
o solvefunção também pode resolver equações de ordem superior. Geralmente é usado para resolver equações quadráticas. A função retorna as raízes da equação em uma matriz.
O exemplo a seguir resolve a equação quadrática x 2 -7x +12 = 0. Crie um arquivo de script e digite o seguinte código -
eq = 'x^2 -7*x + 12 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
Quando você executa o arquivo, ele exibe o seguinte resultado -
The first root is:
3
The second root is:
4
Resolvendo Equações Quadráticas em Oitava
O exemplo a seguir resolve a equação quadrática x 2 -7x +12 = 0 na oitava. Crie um arquivo de script e digite o seguinte código -
s = roots([1, -7, 12]);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
Quando você executa o arquivo, ele exibe o seguinte resultado -
The first root is:
4
The second root is:
3
Resolvendo Equações de Ordem Superior no MATLAB
o solvefunção também pode resolver equações de ordem superior. Por exemplo, vamos resolver uma equação cúbica como (x-3) 2 (x-7) = 0
solve('(x-3)^2*(x-7)=0')
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
3
3
7
No caso de equações de ordem superior, as raízes são longas, contendo muitos termos. Você pode obter o valor numérico dessas raízes convertendo-as para o dobro. O exemplo a seguir resolve a equação de quarta ordem x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.
Crie um arquivo de script e digite o seguinte código -
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
disp('The third root is: '), disp(s(3));
disp('The fourth root is: '), disp(s(4));
% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));
Quando você executa o arquivo, ele retorna o seguinte resultado -
The first root is:
6.630396332390718431485053218985
The second root is:
1.0597804633025896291682772499885
The third root is:
- 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i
The fourth root is:
- 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i
Numeric value of first root
6.6304
Numeric value of second root
1.0598
Numeric value of third root
-0.3451 - 1.0778i
Numeric value of fourth root
-0.3451 + 1.0778i
Observe que as duas últimas raízes são números complexos.
Resolvendo Equações de Ordem Superior em Oitava
O exemplo a seguir resolve a equação de quarta ordem x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.
Crie um arquivo de script e digite o seguinte código -
v = [1, -7, 3, -5, 9];
s = roots(v);
% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));
Quando você executa o arquivo, ele retorna o seguinte resultado -
Numeric value of first root
6.6304
Numeric value of second root
-0.34509 + 1.07784i
Numeric value of third root
-0.34509 - 1.07784i
Numeric value of fourth root
1.0598
Resolvendo Sistema de Equações no MATLAB
o solveA função também pode ser usada para gerar soluções de sistemas de equações envolvendo mais de uma variável. Tomemos um exemplo simples para demonstrar esse uso.
Vamos resolver as equações -
5x + 9y = 5
3x - 6y = 4
Crie um arquivo de script e digite o seguinte código -
s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
s.x
s.y
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
22/19
ans =
-5/57
Da mesma forma, você pode resolver sistemas lineares maiores. Considere o seguinte conjunto de equações -
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Resolvendo Sistema de Equações em Oitava
Temos uma abordagem um pouco diferente para resolver um sistema de 'n' equações lineares em 'n' incógnitas. Tomemos um exemplo simples para demonstrar esse uso.
Vamos resolver as equações -
5x + 9y = 5
3x - 6y = 4
Tal sistema de equações lineares pode ser escrito como a equação de matriz única Ax = b, onde A é a matriz de coeficientes, b é o vetor coluna contendo o lado direito das equações lineares ex é o vetor coluna representando a solução como mostrado no programa abaixo -
Crie um arquivo de script e digite o seguinte código -
A = [5, 9; 3, -6];
b = [5;4];
A \ b
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
1.157895
-0.087719
Da mesma forma, você pode resolver sistemas lineares maiores conforme mostrado abaixo -
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
Expandindo e coletando equações no MATLAB
o expand e a collectfunção expande e coleta uma equação respectivamente. O exemplo a seguir demonstra os conceitos -
Ao trabalhar com muitas funções simbólicas, você deve declarar que suas variáveis são simbólicas.
Crie um arquivo de script e digite o seguinte código -
syms x %symbolic variable x
syms y %symbolic variable x
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))
% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
x^2 + 4*x - 45
ans =
x^4 + x^3 - 43*x^2 + 23*x + 210
ans =
2*cos(x)*sin(x)
ans =
cos(x)*cos(y) - sin(x)*sin(y)
ans =
x^4 - 7*x^3
ans =
x^6 - 8*x^5 + 15*x^4
Expandindo e coletando equações na oitava
Você precisa ter symbolic pacote, que fornece expand e a collectfunção para expandir e coletar uma equação, respectivamente. O exemplo a seguir demonstra os conceitos -
Quando você trabalha com muitas funções simbólicas, deve declarar que suas variáveis são simbólicas, mas o Octave tem uma abordagem diferente para definir variáveis simbólicas. Observe o uso deSin e Cos, que também são definidos no pacote simbólico.
Crie um arquivo de script e digite o seguinte código -
% first of all load the package, make sure its installed.
pkg load symbolic
% make symbols module available
symbols
% define symbolic variables
x = sym ('x');
y = sym ('y');
z = sym ('z');
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(Sin(2*x))
expand(Cos(x+y))
% collecting equations
collect(x^3 *(x-7), z)
collect(x^4*(x-3)*(x-5), z)
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
-45.0+x^2+(4.0)*x
ans =
210.0+x^4-(43.0)*x^2+x^3+(23.0)*x
ans =
sin((2.0)*x)
ans =
cos(y+x)
ans =
x^(3.0)*(-7.0+x)
ans =
(-3.0+x)*x^(4.0)*(-5.0+x)
Fatoração e simplificação de expressões algébricas
o factor função fatoriza uma expressão e o simplifyfunção simplifica uma expressão. O exemplo a seguir demonstra o conceito -
Exemplo
Crie um arquivo de script e digite o seguinte código -
syms x
syms y
factor(x^3 - y^3)
factor([x^2-y^2,x^3+y^3])
simplify((x^4-16)/(x^2-4))
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
(x - y)*(x^2 + x*y + y^2)
ans =
[ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]
ans =
x^2 + 4
O MATLAB fornece várias maneiras de resolver problemas de cálculo diferencial e integral, resolvendo equações diferenciais de qualquer grau e cálculo de limites. O melhor de tudo é que você pode traçar facilmente os gráficos de funções complexas e verificar máximos, mínimos e outros pontos fixos em um gráfico resolvendo a função original, bem como sua derivada.
Este capítulo tratará de problemas de cálculo. Neste capítulo, discutiremos os conceitos de pré-cálculo, isto é, calcular os limites das funções e verificar as propriedades dos limites.
No próximo capítulo Diferencial , calcularemos a derivada de uma expressão e encontraremos os máximos e mínimos locais em um gráfico. Também discutiremos a resolução de equações diferenciais.
Finalmente, no capítulo Integração , discutiremos o cálculo integral.
Limites de cálculo
MATLAB fornece o limitfunção de cálculo de limites. Em sua forma mais básica, olimit A função recebe a expressão como argumento e encontra o limite da expressão quando a variável independente vai para zero.
Por exemplo, vamos calcular o limite de uma função f (x) = (x 3 + 5) / (x 4 + 7), já que x tende a zero.
syms x
limit((x^3 + 5)/(x^4 + 7))
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
5/7
A função limite cai no reino da computação simbólica; você precisa usar osymsfunção para dizer ao MATLAB quais variáveis simbólicas você está usando. Você também pode calcular o limite de uma função, pois a variável tende a algum número diferente de zero. Para calcular lim x-> a (f (x)), usamos o comando limit com argumentos. O primeiro é a expressão e o segundo é o número, que se aproxima de x , aqui é a .
Por exemplo, vamos calcular o limite de uma função f (x) = (x-3) / (x-1), pois x tende a 1.
limit((x - 3)/(x-1),1)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
NaN
Vamos dar outro exemplo,
limit(x^2 + 5, 3)
O MATLAB executará a instrução acima e retornará o seguinte resultado -
ans =
14
Cálculo de limites usando oitava
A seguir está a versão Octave do exemplo acima usando symbolic pacote, tente executar e comparar o resultado -
pkg load symbolic
symbols
x = sym("x");
subs((x^3+5)/(x^4+7),x,0)
O Octave irá executar a instrução acima e retornar o seguinte resultado -
ans =
0.7142857142857142857
Verificação das propriedades básicas dos limites
O Teorema Algébrico do Limite fornece algumas propriedades básicas dos limites. Estes são os seguintes -
Vamos considerar duas funções -
- f (x) = (3x + 5) / (x - 3)
- g (x) = x 2 + 1.
Vamos calcular os limites das funções como x tende a 5, de ambas as funções e verificar as propriedades básicas dos limites usando essas duas funções e o MATLAB.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
syms x
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = limit(f, 4)
l2 = limit (g, 4)
lAdd = limit(f + g, 4)
lSub = limit(f - g, 4)
lMult = limit(f*g, 4)
lDiv = limit (f/g, 4)
Quando você executa o arquivo, ele exibe -
l1 =
17
l2 =
17
lAdd =
34
lSub =
0
lMult =
289
lDiv =
1
Verificação das propriedades básicas dos limites usando oitava
A seguir está a versão Octave do exemplo acima usando symbolic pacote, tente executar e comparar o resultado -
pkg load symbolic
symbols
x = sym("x");
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = subs(f, x, 4)
l2 = subs (g, x, 4)
lAdd = subs (f+g, x, 4)
lSub = subs (f-g, x, 4)
lMult = subs (f*g, x, 4)
lDiv = subs (f/g, x, 4)
O Octave irá executar a instrução acima e retornar o seguinte resultado -
l1 =
17.0
l2 =
17.0
lAdd =
34.0
lSub =
0.0
lMult =
289.0
lDiv =
1.0
Limites do lado esquerdo e direito
Quando uma função tem uma descontinuidade para algum valor particular da variável, o limite não existe naquele ponto. Em outras palavras, os limites de uma função f (x) tem descontinuidade em x = a, quando o valor do limite, conforme x se aproxima de x do lado esquerdo, não é igual ao valor do limite quando x se aproxima do lado direito.
Isso leva ao conceito de limites para canhotos e destros. Um limite para canhotos é definido como o limite quando x -> a, da esquerda, ou seja, x se aproxima de a, para valores de x <a. Um limite para destros é definido como o limite quando x -> a, da direita, ou seja, x se aproxima de a, para valores de x> a. Quando o limite para canhotos e o limite para destros não são iguais, o limite não existe.
Vamos considerar uma função -
f(x) = (x - 3)/|x - 3|
Mostraremos que lim x-> 3 f (x) não existe. O MATLAB nos ajuda a estabelecer esse fato de duas maneiras -
- Traçando o gráfico da função e mostrando a descontinuidade.
- Calculando os limites e mostrando que ambos são diferentes.
Os limites para canhotos e destros são calculados passando as cadeias de caracteres 'esquerda' e 'direita' para o comando limit como último argumento.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')
Quando você executa o arquivo, o MATLAB desenha o seguinte gráfico
Depois que a seguinte saída for exibida -
l =
-1
r =
1
MATLAB fornece o diffcomando para calcular derivados simbólicos. Em sua forma mais simples, você passa a função que deseja diferenciar para o comando diff como um argumento.
Por exemplo, vamos calcular a derivada da função f (t) = 3t 2 + 2t -2
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
syms t
f = 3*t^2 + 2*t^(-2);
diff(f)
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
ans =
6*t - 4/t^3
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
t = sym("t");
f = 3*t^2 + 2*t^(-2);
differentiate(f,t)
Octave executa o código e retorna o seguinte resultado -
ans =
-(4.0)*t^(-3.0)+(6.0)*t
Verificação de regras elementares de diferenciação
Vamos enunciar brevemente várias equações ou regras para diferenciação de funções e verificar essas regras. Para este propósito, escreveremos f '(x) para uma derivada de primeira ordem ef "(x) para uma derivada de segunda ordem.
A seguir estão as regras de diferenciação -
Regra 1
Para quaisquer funções feg e quaisquer números reais a e b são a derivada da função -
h(x) = af(x) + bg(x) em relação ax é dado por -
h'(x) = af'(x) + bg'(x)
Regra 2
o sum e subtraction as regras afirmam que se feg são duas funções, f 'e g' são suas derivadas, respectivamente, então,
(f + g)' = f' + g'
(f - g)' = f' - g'
Regra 3
o product regra afirma que se feg são duas funções, f 'e g' são suas derivadas, respectivamente, então,
(f.g)' = f'.g + g'.f
Regra 4
o quotient regra afirma que se feg são duas funções, f 'e g' são suas derivadas, respectivamente, então,
(f/g)' = (f'.g - g'.f)/g2
Regra 5
o polynomial ou regra de poder elementar afirma que, se y = f(x) = xn, então f' = n. x(n-1)
Um resultado direto desta regra é que a derivada de qualquer constante é zero, ou seja, se y = k, qualquer constante, então
f' = 0
Regra 6
o chain regra afirma que, derivada da função de uma função h(x) = f(g(x)) em relação ax é,
h'(x)= f'(g(x)).g'(x)
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
syms x
syms t
f = (x + 2)*(x^2 + 3)
der1 = diff(f)
f = (t^2 + 3)*(sqrt(t) + t^3)
der2 = diff(f)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = diff(f)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = diff(f)
f = (x^2 + 1)^17
der5 = diff(f)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = diff(f)
Quando você executa o arquivo, o MATLAB exibe o seguinte resultado -
f =
(x^2 + 3)*(x + 2)
der1 =
2*x*(x + 2) + x^2 + 3
f =
(t^(1/2) + t^3)*(t^2 + 3)
der2 =
(t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) + 2*t*(t^(1/2) + t^3)
f =
(x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 =
(2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1)
f =
(2*x^2 + 3*x)/(x^3 + 1)
der4 =
(4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2
f =
(x^2 + 1)^17
der5 =
34*x*(x^2 + 1)^16
f =
1/(t^3 + 3*t^2 + 5*t - 9)^6
der6 =
-(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
t = sym("t");
f = (x + 2)*(x^2 + 3)
der1 = differentiate(f,x)
f = (t^2 + 3)*(t^(1/2) + t^3)
der2 = differentiate(f,t)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = differentiate(f,x)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = differentiate(f,x)
f = (x^2 + 1)^17
der5 = differentiate(f,x)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = differentiate(f,t)
Octave executa o código e retorna o seguinte resultado -
f =
(2.0+x)*(3.0+x^(2.0))
der1 =
3.0+x^(2.0)+(2.0)*(2.0+x)*x
f =
(t^(3.0)+sqrt(t))*(3.0+t^(2.0))
der2 =
(2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0))
f =
(1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))
der3 =
(-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x)
f =
(1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x)
der4 =
(1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x)
f =
(1.0+x^(2.0))^(17.0)
der5 =
(34.0)*(1.0+x^(2.0))^(16.0)*x
f =
(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0)
der6 =
-(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t)
Derivados de funções exponenciais, logarítmicas e trigonométricas
A tabela a seguir fornece os derivados de funções exponenciais, logarítmicas e trigonométricas comumente usadas -
Função | Derivado |
---|---|
ca.x | c a.x .ln ca (ln é o logaritmo natural) |
ex | e x |
ln x | 1 / x |
lncx | 1 / x.ln c |
xx | x x . (1 + ln x) |
sin(x) | cos (x) |
cos(x) | -sin (x) |
tan(x) | sec 2 (x), ou 1 / cos 2 (x), ou 1 + tan 2 (x) |
cot(x) | -csc 2 (x), ou -1 / sen 2 (x), ou - (1 + cot 2 (x)) |
sec(x) | sec (x) .tan (x) |
csc(x) | -csc (x) .cot (x) |
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
syms x
y = exp(x)
diff(y)
y = x^9
diff(y)
y = sin(x)
diff(y)
y = tan(x)
diff(y)
y = cos(x)
diff(y)
y = log(x)
diff(y)
y = log10(x)
diff(y)
y = sin(x)^2
diff(y)
y = cos(3*x^2 + 2*x + 1)
diff(y)
y = exp(x)/sin(x)
diff(y)
Quando você executa o arquivo, o MATLAB exibe o seguinte resultado -
y =
exp(x)
ans =
exp(x)
y =
x^9
ans =
9*x^8
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
tan(x)^2 + 1
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
1/x
y =
log(x)/log(10)
ans =
1/(x*log(10))
y =
sin(x)^2
ans =
2*cos(x)*sin(x)
y =
cos(3*x^2 + 2*x + 1)
ans =
-sin(3*x^2 + 2*x + 1)*(6*x + 2)
y =
exp(x)/sin(x)
ans =
exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
y = Exp(x)
differentiate(y,x)
y = x^9
differentiate(y,x)
y = Sin(x)
differentiate(y,x)
y = Tan(x)
differentiate(y,x)
y = Cos(x)
differentiate(y,x)
y = Log(x)
differentiate(y,x)
% symbolic packages does not have this support
%y = Log10(x)
%differentiate(y,x)
y = Sin(x)^2
differentiate(y,x)
y = Cos(3*x^2 + 2*x + 1)
differentiate(y,x)
y = Exp(x)/Sin(x)
differentiate(y,x)
Octave executa o código e retorna o seguinte resultado -
y =
exp(x)
ans =
exp(x)
y =
x^(9.0)
ans =
(9.0)*x^(8.0)
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
1+tan(x)^2
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
x^(-1)
y =
sin(x)^(2.0)
ans =
(2.0)*sin(x)*cos(x)
y =
cos(1.0+(2.0)*x+(3.0)*x^(2.0))
ans =
-(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0))
y =
sin(x)^(-1)*exp(x)
ans =
sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x)
Computando Derivados de Ordem Superior
Para calcular derivados superiores de uma função f, usamos a sintaxe diff(f,n).
Vamos calcular a segunda derivada da função y = f (x) = x .e -3x
f = x*exp(-3*x);
diff(f, 2)
O MATLAB executa o código e retorna o seguinte resultado -
ans =
9*x*exp(-3*x) - 6*exp(-3*x)
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
f = x*Exp(-3*x);
differentiate(f, x, 2)
Octave executa o código e retorna o seguinte resultado -
ans =
(9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x)
Exemplo
Neste exemplo, vamos resolver um problema. Dado que uma funçãoy = f(x) = 3 sin(x) + 7 cos(5x). Teremos que descobrir se a equaçãof" + f = -5cos(2x) permanece verdadeiro.
Crie um arquivo de script e digite o seguinte código nele -
syms x
y = 3*sin(x)+7*cos(5*x); % defining the function
lhs = diff(y,2)+y; %evaluting the lhs of the equation
rhs = -5*cos(2*x); %rhs of the equation
if(isequal(lhs,rhs))
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
Quando você executa o arquivo, ele exibe o seguinte resultado -
No, the equation does not hold true
Value of LHS is:
-168*cos(5*x)
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
y = 3*Sin(x)+7*Cos(5*x); % defining the function
lhs = differentiate(y, x, 2) + y; %evaluting the lhs of the equation
rhs = -5*Cos(2*x); %rhs of the equation
if(lhs == rhs)
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
Octave executa o código e retorna o seguinte resultado -
No, the equation does not hold true
Value of LHS is:
-(168.0)*cos((5.0)*x)
Encontrando o Máximo e o Mínimo de uma Curva
Se estivermos procurando pelos máximos e mínimos locais para um gráfico, estamos basicamente procurando pelos pontos mais altos ou mais baixos no gráfico da função em uma localidade particular, ou por uma faixa particular de valores da variável simbólica.
Para uma função y = f (x), os pontos no gráfico onde o gráfico tem inclinação zero são chamados stationary points. Em outras palavras, os pontos estacionários estão onde f '(x) = 0.
Para encontrar os pontos estacionários de uma função que diferenciamos, precisamos definir a derivada igual a zero e resolver a equação.
Exemplo
Vamos encontrar os pontos estacionários da função f (x) = 2x 3 + 3x 2 - 12x + 17
Execute as seguintes etapas -
First let us enter the function and plot its graph.
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the function
ezplot(y)
O MATLAB executa o código e retorna o seguinte gráfico -
Aqui está o código equivalente do Octave para o exemplo acima -
pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y)
print -deps graph.eps
Our aim is to find some local maxima and minima on the graph, so let us find the local maxima and minima for the interval [-2, 2] on the graph.
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the function
ezplot(y, [-2, 2])
O MATLAB executa o código e retorna o seguinte gráfico -
Aqui está o código equivalente do Octave para o exemplo acima -
pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y, [-2, 2])
print -deps graph.eps
Next, let us compute the derivative.
g = diff(y)
O MATLAB executa o código e retorna o seguinte resultado -
g =
6*x^2 + 6*x - 12
Aqui está o equivalente do Octave do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
Octave executa o código e retorna o seguinte resultado -
g =
-12.0+(6.0)*x+(6.0)*x^(2.0)
Let us solve the derivative function, g, to get the values where it becomes zero.
s = solve(g)
O MATLAB executa o código e retorna o seguinte resultado -
s =
1
-2
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])
Octave executa o código e retorna o seguinte resultado -
g =
-12.0+(6.0)*x^(2.0)+(6.0)*x
ans =
-2
1
This agrees with our plot. So let us evaluate the function f at the critical points x = 1, -2. Podemos substituir um valor em uma função simbólica usando o subs comando.
subs(y, 1), subs(y, -2)
O MATLAB executa o código e retorna o seguinte resultado -
ans =
10
ans =
37
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])
subs(y, x, 1), subs(y, x, -2)
ans =
10.0
ans =
37.0-4.6734207789940138748E-18*I
Portanto, os valores mínimo e máximo na função f (x) = 2x 3 + 3x 2 - 12x + 17, no intervalo [-2,2] são 10 e 37.
Resolvendo Equações Diferenciais
MATLAB fornece o dsolve comando para resolver equações diferenciais simbolicamente.
A forma mais básica do dsolve comando para encontrar a solução para uma única equação é
dsolve('eqn')
onde eqn é uma string de texto usada para inserir a equação.
Ele retorna uma solução simbólica com um conjunto de constantes arbitrárias que o MATLAB rotula C1, C2 e assim por diante.
Você também pode especificar as condições iniciais e de limite para o problema, como uma lista delimitada por vírgulas após a equação como -
dsolve('eqn','cond1', 'cond2',…)
Para o propósito de usar o comando dsolve, derivatives are indicated with a D. Por exemplo, uma equação como f '(t) = -2 * f + custo (t) é inserida como -
'Df = -2*f + cos(t)'
Derivadas mais altas são indicadas seguindo D pela ordem da derivada.
Por exemplo, a equação f "(x) + 2f '(x) = 5sin3x deve ser inserida como -
'D2y + 2Dy = 5*sin(3*x)'
Tomemos um exemplo simples de uma equação diferencial de primeira ordem: y '= 5y.
s = dsolve('Dy = 5*y')
O MATLAB executa o código e retorna o seguinte resultado -
s =
C2*exp(5*t)
Tomemos outro exemplo de uma equação diferencial de segunda ordem como: y "- y = 0, y (0) = -1, y '(0) = 2.
dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')
O MATLAB executa o código e retorna o seguinte resultado -
ans =
exp(t)/2 - (3*exp(-t))/2
A integração lida com dois tipos de problemas essencialmente diferentes.
No primeiro tipo, a derivada de uma função é fornecida e queremos encontrar a função. Portanto, basicamente invertemos o processo de diferenciação. Este processo reverso é conhecido como antidiferenciação, ou encontrar a função primitiva, ou encontrar umindefinite integral.
O segundo tipo de problema envolve somar um número muito grande de quantidades muito pequenas e, então, estabelecer um limite quando o tamanho das quantidades se aproxima de zero, enquanto o número de termos tende ao infinito. Este processo leva à definição dodefinite integral.
Integrais definidos são usados para encontrar área, volume, centro de gravidade, momento de inércia, trabalho realizado por uma força e em inúmeras outras aplicações.
Encontrando Integral Indefinido Usando MATLAB
Por definição, se a derivada de uma função f (x) é f '(x), então dizemos que uma integral indefinida de f' (x) em relação a x é f (x). Por exemplo, como a derivada (em relação a x) de x 2 é 2x, podemos dizer que uma integral indefinida de 2x é x 2 .
Em símbolos -
f'(x2) = 2x, Portanto,
∫ 2xdx = x2.
Integral indefinido não é único, porque a derivada de x 2 + c, para qualquer valor de uma constante c, também será 2x.
Isso é expresso em símbolos como -
∫ 2xdx = x2 + c.
Onde, c é chamado de 'constante arbitrária'.
O MATLAB fornece um intcomando para calcular a integral de uma expressão. Para derivar uma expressão para a integral indefinida de uma função, escrevemos -
int(f);
Por exemplo, do nosso exemplo anterior -
syms x
int(2*x)
O MATLAB executa a instrução acima e retorna o seguinte resultado -
ans =
x^2
Exemplo 1
Neste exemplo, vamos encontrar a integral de algumas expressões comumente usadas. Crie um arquivo de script e digite o seguinte código nele -
syms x n
int(sym(x^n))
f = 'sin(n*t)'
int(sym(f))
syms a t
int(a*cos(pi*t))
int(a^x)
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)])
f =
sin(n*t)
ans =
-cos(n*t)/n
ans =
(a*sin(pi*t))/pi
ans =
a^x/log(a)
Exemplo 2
Crie um arquivo de script e digite o seguinte código nele -
syms x n
int(cos(x))
int(exp(x))
int(log(x))
int(x^-1)
int(x^5*cos(5*x))
pretty(int(x^5*cos(5*x)))
int(x^-5)
int(sec(x)^2)
pretty(int(1 - 10*x + 9 * x^2))
int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2)
pretty(int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2))
Observe que o pretty função retorna uma expressão em um formato mais legível.
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
sin(x)
ans =
exp(x)
ans =
x*(log(x) - 1)
ans =
log(x)
ans =
(24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5
2 4
24 cos(5 x) 24 x sin(5 x) 12 x cos(5 x) x cos(5 x)
----------- + ------------- - -------------- + ------------
3125 625 125 5
3 5
4 x sin(5 x) x sin(5 x)
------------- + -----------
25 5
ans =
-1/(4*x^4)
ans =
tan(x)
2
x (3 x - 5 x + 1)
ans =
- (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2
6 5 4 3
7 x 3 x 5 x x
- ---- - ---- + ---- + --
12 5 8 2
Encontrando Integral Definido Usando MATLAB
Por definição, integral definida é basicamente o limite de uma soma. Usamos integrais definidas para encontrar áreas como a área entre uma curva e o eixo xe a área entre duas curvas. Integrais definidos também podem ser usados em outras situações, onde a quantidade necessária pode ser expressa como o limite de uma soma.
o int A função pode ser usada para integração definida passando os limites sobre os quais você deseja calcular a integral.
Calcular
nós escrevemos,
int(x, a, b)
Por exemplo, para calcular o valor de
int(x, 4, 9)
O MATLAB executa a instrução acima e retorna o seguinte resultado -
ans =
65/2
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
f = x;
c = [1, 0];
integral = polyint(c);
a = polyval(integral, 9) - polyval(integral, 4);
display('Area: '), disp(double(a));
Octave executa o código e retorna o seguinte resultado -
Area:
32.500
Uma solução alternativa pode ser dada usando a função quad () fornecida pelo Octave como segue -
pkg load symbolic
symbols
f = inline("x");
[a, ierror, nfneval] = quad(f, 4, 9);
display('Area: '), disp(double(a));
Octave executa o código e retorna o seguinte resultado -
Area:
32.500
Exemplo 1
Vamos calcular a área delimitada entre o eixo xe a curva y = x 3 −2x + 5 e as ordenadas x = 1 e x = 2.
A área necessária é fornecida por -
Crie um arquivo de script e digite o seguinte código -
f = x^3 - 2*x +5;
a = int(f, 1, 2)
display('Area: '), disp(double(a));
Quando você executa o arquivo, ele exibe o seguinte resultado -
a =
23/4
Area:
5.7500
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
f = x^3 - 2*x +5;
c = [1, 0, -2, 5];
integral = polyint(c);
a = polyval(integral, 2) - polyval(integral, 1);
display('Area: '), disp(double(a));
Octave executa o código e retorna o seguinte resultado -
Area:
5.7500
Uma solução alternativa pode ser dada usando a função quad () fornecida pelo Octave como segue -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^3 - 2*x +5");
[a, ierror, nfneval] = quad(f, 1, 2);
display('Area: '), disp(double(a));
Octave executa o código e retorna o seguinte resultado -
Area:
5.7500
Exemplo 2
Encontre a área sob a curva: f (x) = x 2 cos (x) para −4 ≤ x ≤ 9.
Crie um arquivo de script e escreva o seguinte código -
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));
Quando você executa o arquivo, o MATLAB traça o gráfico -
O resultado é dado abaixo -
a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
Area:
0.3326
A seguir está o oitavo equivalente do cálculo acima -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^2*cos(x)");
ezplot(f, [-4,9])
print -deps graph.eps
[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));
MATLAB representa polinômios como vetores de linha contendo coeficientes ordenados por potências descendentes. Por exemplo, a equação P (x) = x 4 + 7x 3 - 5x + 9 pode ser representada como -
p = [1 7 0 -5 9];
Avaliando Polinômios
o polyvalfunção é usada para avaliar um polinômio em um valor especificado. Por exemplo, para avaliar nosso polinômio anteriorp, em x = 4, digite -
p = [1 7 0 -5 9];
polyval(p,4)
O MATLAB executa as instruções acima e retorna o seguinte resultado -
ans = 693
O MATLAB também fornece o polyvalmfunção para avaliar um polinômio de matriz. Um polinômio de matriz é umpolynomial com matrizes como variáveis.
Por exemplo, vamos criar uma matriz quadrada X e avaliar o polinômio p, em X -
p = [1 7 0 -5 9];
X = [1 2 -3 4; 2 -5 6 3; 3 1 0 2; 5 -7 3 8];
polyvalm(p, X)
O MATLAB executa as instruções acima e retorna o seguinte resultado -
ans =
2307 -1769 -939 4499
2314 -2376 -249 4695
2256 -1892 -549 4310
4570 -4532 -1062 9269
Encontrando as raízes dos polinômios
o rootsfunção calcula as raízes de um polinômio. Por exemplo, para calcular as raízes do nosso polinômio p, digite -
p = [1 7 0 -5 9];
r = roots(p)
O MATLAB executa as instruções acima e retorna o seguinte resultado -
r =
-6.8661 + 0.0000i
-1.4247 + 0.0000i
0.6454 + 0.7095i
0.6454 - 0.7095i
A função polyé um inverso da função de raízes e retorna aos coeficientes polinomiais. Por exemplo -
p2 = poly(r)
O MATLAB executa as instruções acima e retorna o seguinte resultado -
p2 =
Columns 1 through 3:
1.00000 + 0.00000i 7.00000 + 0.00000i 0.00000 + 0.00000i
Columns 4 and 5:
-5.00000 - 0.00000i 9.00000 + 0.00000i
Ajuste de curva polinomial
o polyfitfunção encontra os coeficientes de um polinômio que se ajusta a um conjunto de dados no sentido de mínimos quadrados. Se x e y são dois vetores contendo os dados x e y a serem ajustados a um polinômio de n graus, então obtemos o polinômio ajustando os dados escrevendo -
p = polyfit(x,y,n)
Exemplo
Crie um arquivo de script e digite o seguinte código -
x = [1 2 3 4 5 6]; y = [5.5 43.1 128 290.7 498.4 978.67]; %data
p = polyfit(x,y,4) %get the polynomial
% Compute the values of the polyfit estimate over a finer range,
% and plot the estimate over the real data values for comparison:
x2 = 1:.1:6;
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2)
grid on
Quando você executa o arquivo, o MATLAB exibe o seguinte resultado -
p =
4.1056 -47.9607 222.2598 -362.7453 191.1250
E traça o seguinte gráfico -
O MATLAB fornece comandos para trabalhar com transformações, como as transformações de Laplace e Fourier. As transformações são usadas na ciência e na engenharia como uma ferramenta para simplificar a análise e olhar para os dados de outro ângulo.
Por exemplo, a transformada de Fourier nos permite converter um sinal representado em função do tempo em função da frequência. A transformada de Laplace nos permite converter uma equação diferencial em uma equação algébrica.
MATLAB fornece o laplace, fourier e fft comandos para trabalhar com as transformações de Laplace, Fourier e Fast Fourier.
A transformação de Laplace
A transformada de Laplace de uma função de tempo f (t) é dada pela seguinte integral -
A transformada de Laplace também é denotada como transformada de f (t) em F (s). Você pode ver que esse processo de transformação ou integração converte f (t), uma função da variável simbólica t, em outra função F (s), com outra variável s.
A transformada de Laplace transforma equações diferenciais em algébricas. Para calcular uma transformada de Laplace de uma função f (t), escreva -
laplace(f(t))
Exemplo
Neste exemplo, calcularemos a transformada de Laplace de algumas funções comumente usadas.
Crie um arquivo de script e digite o seguinte código -
syms s t a b w
laplace(a)
laplace(t^2)
laplace(t^9)
laplace(exp(-b*t))
laplace(sin(w*t))
laplace(cos(w*t))
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
1/s^2
ans =
2/s^3
ans =
362880/s^10
ans =
1/(b + s)
ans =
w/(s^2 + w^2)
ans =
s/(s^2 + w^2)
A Transformada Inversa de Laplace
O MATLAB nos permite calcular a transformação inversa de Laplace usando o comando ilaplace.
Por exemplo,
ilaplace(1/s^3)
O MATLAB executará a instrução acima e exibirá o resultado -
ans =
t^2/2
Exemplo
Crie um arquivo de script e digite o seguinte código -
syms s t a b w
ilaplace(1/s^7)
ilaplace(2/(w+s))
ilaplace(s/(s^2+4))
ilaplace(exp(-b*t))
ilaplace(w/(s^2 + w^2))
ilaplace(s/(s^2 + w^2))
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans =
t^6/720
ans =
2*exp(-t*w)
ans =
cos(2*t)
ans =
ilaplace(exp(-b*t), t, x)
ans =
sin(t*w)
ans =
cos(t*w)
As transformadas de Fourier
As transformadas de Fourier comumente transformam uma função matemática do tempo, f (t), em uma nova função, às vezes denotada por ou F, cujo argumento é frequência com unidades de ciclos / s (hertz) ou radianos por segundo. A nova função é então conhecida como transformada de Fourier e / ou espectro de frequência da função f.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
syms x
f = exp(-2*x^2); %our function
ezplot(f,[-2,2]) % plot of our function
FT = fourier(f) % Fourier transform
Quando você executa o arquivo, o MATLAB traça o seguinte gráfico -
O seguinte resultado é exibido -
FT =
(2^(1/2)*pi^(1/2)*exp(-w^2/8))/2
Traçando a transformada de Fourier como -
ezplot(FT)
Dá o seguinte gráfico -
Transformadas inversas de Fourier
MATLAB fornece o ifouriercomando para calcular a transformada de Fourier inversa de uma função. Por exemplo,
f = ifourier(-2*exp(-abs(w)))
O MATLAB executará a instrução acima e exibirá o resultado -
f =
-2/(pi*(x^2 + 1))
GNU Octave é uma linguagem de programação de alto nível como MATLAB e é principalmente compatível com MATLAB. Ele também é usado para cálculos numéricos.
Octave tem as seguintes características comuns com MATLAB -
- matrizes são tipos de dados fundamentais
- tem suporte integrado para números complexos
- tem funções matemáticas e bibliotecas integradas
- ele suporta funções definidas pelo usuário
O GNU Octave também é um software livremente redistribuível. Você pode redistribuí-lo e / ou modificá-lo sob os termos da GNU General Public License (GPL), conforme publicada pela Free Software Foundation.
MATLAB vs Octave
A maioria dos programas do MATLAB são executados no Octave, mas alguns dos programas do Octave podem não ser executados no MATLAB porque o Octave permite alguma sintaxe que o MATLAB não permite.
Por exemplo, MATLAB suporta apenas aspas simples, mas Octave suporta aspas simples e duplas para definir strings. Se você está procurando um tutorial sobre o Octave, por favor, siga este tutorial desde o início, que cobre tanto o MATLAB quanto o Octave.
Exemplos Compatíveis
Quase todos os exemplos cobertos neste tutorial são compatíveis com MATLAB e também com Octave. Vamos tentar o seguinte exemplo em MATLAB e Octave que produz o mesmo resultado sem quaisquer alterações de sintaxe -
Este exemplo cria um mapa de superfície 3D para a função g = xe - (x 2 + y 2 ) . Crie um arquivo de script e digite o seguinte código -
[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps
Quando você executa o arquivo, o MATLAB exibe o seguinte mapa 3-D -
Exemplos não compatíveis
Embora todas as funcionalidades principais do MATLAB estejam disponíveis no Octave, existem algumas funcionalidades, por exemplo, Cálculo diferencial e de integração, que não correspondem exatamente em ambos os idiomas. Este tutorial tentou fornecer os dois tipos de exemplos em que eles diferiam em sua sintaxe.
Considere o seguinte exemplo em que MATLAB e Octave usam funções diferentes para obter a área de uma curva: f (x) = x 2 cos (x) para −4 ≤ x ≤ 9. A seguir está a versão MATLAB do código -
f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));
Quando você executa o arquivo, o MATLAB traça o gráfico -
O seguinte resultado é exibido
a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
Area:
0.3326
Mas para dar área da mesma curva no Octave, você terá que fazer uso de symbolic pacote da seguinte forma -
pkg load symbolic
symbols
x = sym("x");
f = inline("x^2*cos(x)");
ezplot(f, [-4,9])
print -deps graph.eps
[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));
Simulink é um ambiente de simulação e design baseado em modelo para sistemas dinâmicos e embarcados, integrado ao MATLAB. Simulink, também desenvolvido pela MathWorks, é uma ferramenta de linguagem de programação gráfica de fluxo de dados para modelar, simular e analisar sistemas dinâmicos de múltiplos domínios. É basicamente uma ferramenta gráfica de diagramação de blocos com conjunto personalizável de bibliotecas de blocos.
Ele permite que você incorpore algoritmos do MATLAB aos modelos, bem como exporte os resultados da simulação para o MATLAB para análise posterior.
Suporta Simulink -
- design de nível de sistema
- simulation
- geração automática de código
- teste e verificação de sistemas embarcados
Existem vários outros produtos complementares fornecidos pela MathWorks e produtos de hardware e software de terceiros que estão disponíveis para uso com o Simulink.
A lista a seguir fornece uma breve descrição de alguns deles -
Stateflow permite o desenvolvimento de máquinas de estado e fluxogramas.
Simulink Coder permite a geração de código-fonte C para implementação em tempo real de sistemas automaticamente.
xPC Target junto com x86-based real-time systems fornecer um ambiente para simular e testar modelos Simulink e Stateflow em tempo real no sistema físico.
Embedded Coder suporta destinos incorporados específicos.
HDL Coder permite gerar automaticamente VHDL e Verilog sintetizáveis.
SimEvents fornece uma biblioteca de blocos de construção gráficos para modelar sistemas de enfileiramento.
O Simulink é capaz de verificação e validação sistemática de modelos por meio de verificação de estilo de modelagem, rastreabilidade de requisitos e análise de cobertura de modelo.
O Simulink Design Verifier permite identificar erros de design e gerar cenários de caso de teste para verificação de modelo.
Usando Simulink
Para abrir o Simulink, digite no espaço de trabalho do MATLAB -
simulink
Simulink abre com o Library Browser. O navegador da biblioteca é usado para construir modelos de simulação.
No painel da janela do lado esquerdo, você encontrará várias bibliotecas categorizadas com base em vários sistemas, clicando em cada uma exibirá os blocos de design no painel da janela à direita.
Modelos de construção
Para criar um novo modelo, clique no Newbotão na barra de ferramentas do navegador da biblioteca. Isso abre uma nova janela de modelo sem título.
Um modelo Simulink é um diagrama de blocos.
Os elementos do modelo são adicionados selecionando os elementos apropriados no Navegador da biblioteca e arrastando-os para a janela Modelo.
Como alternativa, você pode copiar os elementos do modelo e colá-los na janela do modelo.
Exemplos
Arraste e solte itens da biblioteca Simulink para fazer seu projeto.
Para o propósito deste exemplo, dois blocos serão usados para a simulação - A Source (um sinal) e um Sink(um escopo). Um gerador de sinal (a fonte) gera um sinal analógico, que será então visualizado graficamente pelo osciloscópio (o coletor).
Comece arrastando os blocos necessários da biblioteca para a janela do projeto. Em seguida, conecte os blocos, o que pode ser feito arrastando os conectores dos pontos de conexão em um bloco para os de outro.
Vamos arrastar um bloco de 'onda senoidal' para o modelo.
Selecione 'Sinks' na biblioteca e arraste um bloco 'Scope' para o modelo.
Arraste uma linha de sinal da saída do bloco de onda senoidal para a entrada do bloco Scope.
Execute a simulação pressionando 'Runbotão ', mantendo todos os parâmetros padrão (você pode alterá-los no menu Simulação)
Você deve obter o gráfico abaixo do escopo.