MATLAB

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Question book.svg
Este artigo não cita fontes confiáveis e independentes. (desde dezembro de 2010). Por favor, adicione referências e insira-as corretamente no texto ou no rodapé. Conteúdo sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)
MATLAB
Captura de tela
Uma superfície criada no Matlab
Desenvolvedor MathWorks
Versão estável R2013a (7 de março de 2012; há 145 semanas e 3 dias)
Escrito em C, Java
Sistema operativo Multiplataforma
Gênero(s) Computação técnica
Licença Proprietário
Página oficial http://www.mathworks.com/products/matlab/?s_cid=wiki_matlab_2 (em inglês, em espanhol, em português e em alemão)., acessado pela última vez há 116 semanas e 5 dias

MATLAB (MATrix LABoratory) trata-se de um software interativo de alta performance voltado para o cálculo numérico. O MATLAB integra análise numérica, cálculo com matrizes, processamento de sinais e construção de gráficos em ambiente fácil de usar onde problemas e soluções são expressos somente como eles são escritos matematicamente, ao contrário da programação tradicional.

O MATLAB é um sistema interativo cujo elemento básico de informação é uma matriz que não requer dimensionamento. Esse sistema permite a resolução de muitos problemas numéricos em apenas uma fração do tempo que se gastaria para escrever um programa semelhante em linguagem Fortran, Basic ou C. Além disso, as soluções dos problemas são expressas quase exatamente como elas são escritas matematicamente.

Histórico[editar | editar código-fonte]

O Matlab é um software destinado a fazer cálculos com matrizes (Matlab = MATrix LABoratory). MATLAB foi criada no fim dos anos 1970 por Cleve Moler, então presidente do departamento de ciências da computação da Universidade do Novo México. Ela logo se espalhou para outras universidades e encontrou um forte uso no âmbito da comunidade matemática aplicada. Jack Little, um engenheiro, conheceu a linguagem MATLAB, durante uma visita feita por Moler a Universidade de Stanford em 1983. Reconhecendo o seu potencial comercial, ele juntou-se a Moler e Steve Bangert. Eles reescreveram MATLAB em C, em 1984 fundaram a MathWorks e prosseguiram no seu desenvolvimento. As bibliotecas reescritas ficaram conhecidas como LAPACK.

MATLAB foi adotado pela primeira vez por engenheiros de projeto de controle, a especialidade de Little, e rapidamente se espalhou para outros campos de aplicação. Agora, é também utilizado nas áreas da educação, em especial o ensino da álgebra linear e análise numérica, e é muito popular entre os cientistas envolvidos com o processamento de imagem.

Sintaxe[editar | editar código-fonte]

MATLAB é construído na linguagem MATLAB, às vezes chamada M-código ou simplesmente M. No Gerenciador de Programas do Microsoft Windows deve-se abrir o grupo de programas do MATLAB for Windows, que contém o ícone do aplicativo MATLAB. Um duplo clique no ícone MATLAB carrega o aplicativo MATLAB. Quando o MATLAB é carregado, duas janelas são exibidas: a Janela de Comando (Command Windows) e Janela Gráfica (Graphic Windows). A Janela de Comando é ativada quando se inicializa o MATLAB, e o "prompt" padrão (>>) é exibido na tela. MATLAB pode ser usado como um shell interativo de matemática. Seqüências de comandos podem ser guardadas em um arquivo de texto, tipicamente utilizando o MATLAB Editor, como um script ou encapsulado em uma função, alargando os comandos disponíveis.

Variáveis[editar | editar código-fonte]

As variáveis são definidas com o operador “=”. MATLAB é dinamicamente digitado, o que significa que variáveis podem ser atribuídas sem declarar seu tipo, mas este pode ser alterado. Os valores podem vir de constantes, a partir de cálculos que envolvam valores de outras variáveis, ou a partir da saída de uma função. Por exemplo:

>> x = 17
x =
 17
>> x = 'hat'
x =
hat
>> x = [3*4, pi/2]
x =
   12.0000    1.5708
>> y = 3*sin(x)
y =
   -1.6097    3.0000

Vetores e Matrizes[editar | editar código-fonte]

MATLAB é um "Matrix Laboratory" e, como tal, fornece muitas maneiras convenientes para a criação de matrizes de várias dimensões. No vocabulário MATLAB, um vetor refere-se a uma dimensão (1 × N ou N × 1), comumente referida como um vetor em outras linguagens de programação. A matriz geralmente se refere a uma matriz multi-dimensional, isto é, uma matriz com mais de uma dimensão, por exemplo, uma N × M, uma N × M × L, etc, onde N, M, L, são superiores a 1. Em outras linguagens, uma matriz pode ser referida como um array de arrays, ou array de arrays de arrays, ou simplesmente como um array multidimensional.

MATLAB oferece uma maneira simples de definir arrays simples, usando a sintaxe: inicial: incremento: final. Por exemplo:

>> array = 1:2:9
array =
 1 3 5 7 9

Define uma variável chamada array (ou atribui um novo valor a uma variável já existente com o nome array), que é constituído por uma matriz dos valores 1, 3, 5, 7 e 9, ou seja, a matriz começa em 1, o valor inicial, e cada valor é incrementado a partir do valor anterior em 2 (incremento do valor), e para quando ele chega a 9, mas não ultrapassa o valor 9 (9 sendo o valor final).

>> array = 1:3:9
array =
 1 4 7

O valor do incremento pode ficar fora desta sintaxe (junto com os “:”), para usar um valor padrão de incremento 1.

>> ari = 1:5
ari =
 1 2 3 4 5

Atribui à variável chamada ari um array com os valores 1, 2, 3, 4 e 5, uma vez que o valor padrão 1 é usado como o incremento.

A indexação é uma base de [5], que é a convenção usual para matrizes em matemática. Isso é atípico para linguagens de programação, cujos arranjos mais freqüentemente começam com zero.

Matrizes podem ser definidas separando os elementos de uma fila com espaço em branco ou usando vírgula e ponto-e-vírgula para terminar cada linha. A lista de elementos deve ser cercada por colchetes: []. Parênteses: () são usados para acessar os elementos e subarrays (eles também são usados para denotar uma função argumento lista).

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A =
 16  3  2 13
  5 10 11  8
  9  6  7 12
  4 15 14  1
 
>> A(2,3)
ans =
 11
 
>> A(2:4,3:4)
ans =
 11 8
 7 12
 14 1

Uma matriz identidade de tamanho n podem ser gerada usando a função eye, e matrizes de qualquer tamanho ou aquelas com zeros podem ser geradas com as funções zeros e ones, respectivamente.

>> eye(3)
ans =
 1 0 0
 0 1 0
 0 0 1
>> zeros(2,3)
ans =
 0 0 0
 0 0 0
>> ones(2,3)
ans =
 1 1 1
 1 1 1

A maior parte das funções MATLAB pode aceitar matrizes e irá aplicar-se a cada elemento. Por exemplo, mod (2 * J, n) irá multiplicar cada elemento em "J" a 2 e, em seguida, reduzir cada elemento módulo "n". MATLAB não inclui padrão "para" e "enquanto", mas usando MATLAB's vectorized a notação produz um código que muitas vezes é mais fácil de ler e mais rápido para executar. Este código,a partir da função magic.m, cria um cubo mágico M,para valores de n (MATLAB função meshgrid é aqui utilizada para gerar matrizes quadradas e I.J contendo 1: n).

[J,I] = meshgrid(1:n);
A = mod(I+J-(n+3)/2,n);
B = mod(I+2*J-2,n);
M = n*A + B + 1;

Extensões[editar | editar código-fonte]

O programa dispõe de diversas extensões (chamadas toolboxes ou blocksets), sendo o mais conhecido o Simulink, implementando uma interface de diagrama de blocos.

  • Simulink;
  • Neural Network Toolbox;
  • MATLAB Report Generator;
  • MATLAB Compiler; e
  • Power Systems Blockset.

Exemplos de código-fonte[editar | editar código-fonte]

O Matlab é uma combinação perfeita de muitas das linguagens mais utilizadas, tais como C, Java e Basic. Esta linguagem segue então de uma maneira muito fiel a maior parte dos aspectos das linguagens que estiveram na sua origem. Esta é então uma das grandes vantagens do Matlab: um programador de C não terá grandes dificuldades em se adaptar a esta linguagem, visto que os códigos-fonte são muito parecidos; um programador de Java não terá grande dificuldade em se adaptar à construção de objectos GUI em Matlab (no entanto, o Matlab tem também uma boa componente de interface não gráfica).

Olá Mundo[editar | editar código-fonte]

O já habitual programa em que se cria uma simples mensagem na tela que diz "Olá Mundo". Para isso, em Matlab usa-se a função disp().

1 disp('Olá Mundo');

A função disp() tanto pode ser usada para impressão directa, ou seja, o programador escreve no código-fonte aquilo que deve sempre ser impresso ou nomeia uma função na qual escreve aquilo qu quer ou pede ao user para escrever numa variavel de entrada o que deseja.

OBS:Na versão 2008b, não é necessário colocar o ;(ponto-e-vírgula) no final do disp.

Usando variaveis:

texto = 'Olá Mundo';
disp(texto);
texto = input('Escreva a sua mensagem--> ','s');
disp(texto);

No primeiro caso, o Matlab retornaria a mensagem "Olá Mundo", mas no 2.º caso a mensagem a ser escrita iria ser decidida pelo user. Para que seja possível ao user dar alguma ordem ao software existe a função input(). Para se compreender melhor esta função apresenta-se de seguida um programa de baixa complexidade, que servirá também de introdução às estruturas aninhadas.

Nota: no final de cada linha de código em Matlab é conveniente escrever ;. Este caracter serve para omitir o aparecimento do valor de variaveis no dispositivo de saída.

Informação Idades[editar | editar código-fonte]

Neste programa pretende-se iniciar o uso da função input() e das estruturas aninhadas. Neste simples software o usuário vai introduzir um determinado valor numérico, que deverá corresponder a uma idade, e o programa devolverá uma determinada mensagem de acordo com o valor introduzido.

idade = input('Introduza uma idade--> ');
if (idade == 0)
    disp('És um recém-nascido');
 elseif (idade > 0 & idade <= 6)
    disp('És um bebé');
 elseif (idade > 6 & idade <= 12)
    disp('És uma criança');
 elseif (idade > 13 & idade < 18)
    disp('És um adolescente');
 elseif (idade == 18)
   disp('Agora que tens 18 anos já és um adulto');
 elseif (idade > 18 & idade <= 35)
   disp('Aproveita a vida que ainda és um jovem');
 elseif (idade > 35 & idade <=60)
   disp('Estás na meia idade');
 elseif (idade > 60);
   disp('Estás na velhice');
 else
   disp('Idade incompreendida');
 end;

Com este software pretende-se de uma forma simples fazer entender como funciona uma estrutura nested e compreender melhor a função input(). Função input(): com a função input() é pedido ao utilizador que retorne um certo valor alfanumérico ao sistema, sendo que o programa só continua quando o utilizador retornar esse valor. É como num pedy-paper, quando nos deparamos com uma pergunta e só podemos avançar quando lhe respondermos. O que acontece neste programa é que o utilizador retorna um valor numérico à variável idade, para depois ser analisado. Repare que no programa anterior, o da mensagem escolhida pelo user, a função input() era usada com a seguinte sintaxe: texto = input('Escreva a sua mensagem--> ','s'); em quanto que no programa de informação de idades é escrito assim: idade = input('Escreva uma idade--> ');. A parte do 's' é usada com a função input() quando queremos que dar a possibilidade ao user de retornar para a variavel qualquer tipo de valor que ele queira (tanto números como letras). Quando não se usa esta sintaxe, pretende-se que o user apenas introduza valores do tipo numérico, sendo que quando isso não acontece aparece a seguinte mensagem de aviso no ecrã:

teste = input('Valor--> ')
Valor--> texto
??? Error using ==> input
Undefined function or variable 'texto'.

Método de Newton[editar | editar código-fonte]

function teste=newton(f,p,t)
%Calcula, mostrando as iterações, a raíz de uma função transcendente qualquer
%até uma determinada precisão.
%Entre com newton('função em termos de x',precisão,chute inicial)
%
%Exemplo: Ao entrar com:
%
%newton('x^2-3',0.0001,9)
% 
%O programa mostra:
%
%1ª iteração = 4.666666666666667 f(x1)= 78.000000000000000
%2ª iteração = 2.654761904761905 f(x2)= 18.777777777777782
%3ª iteração = 1.892403373905616 f(x3)= 4.047760770975057
%4ª iteração = 1.738844535028185 f(x4)= 0.581190529569359
%5ª iteração = 1.732064079236316 f(x5)= 0.023580316997385
%6ª iteração = 1.732064079236316 f(x6)= 0.000045974580746
%
%A raíz é aproximadamente 1.732064079236316
%
%E mostra automaticamente o gráfico
syms x;                 %defino x como simbolo
dery=diff(f,x);         %crio a função derivada de f em função de x
cont=1;                 
y=subs(f,t);
dy=subs(dery,t);
fprintf(' \n');
while abs(y)>p
    t=t-y/dy;
    fprintf('%dª iteração = %.15f f(x%d)= %.15f\n',cont,t,cont,y);
    y=subs(f,t);
    dy=subs(dery,t);
    cont=cont+1;
    if abs(y/dy)==0
        break
    end
end
fprintf('%dª iteração = %.15f f(x%d)= %.15f\n',cont,t,cont,y)
fprintf(' \n')
fprintf('A raíz é aproximadamente %.15f\n',t)
a=linspace(t-50,t+50,500);
b=subs(f,a);
plot(a,b)
hold on
title('Raiz de f que se aproxima do chute inicial')
plot(t,0,'r*')
legend(f)
xlabel('eixo x')
ylabel('eixo y')
fprintf(' \n').

Ligações externas[editar | editar código-fonte]

Ver também[editar | editar código-fonte]

  • GNU Octave, free software com uma linguagem muito parecida com o MATLAB