segunda-feira, 25 de janeiro de 2010

Parar um código durante execução

Comumente, durante o desenvolvimento de programas, acabamos caindo em loops infinitos ou situações indesejadas.

Se deseja parar algum código do Matlab durante sua execução, basta pressionar Ctrl + C.

FOR, IF e WHILE

Sabendo-se criar M-Files, podemos passar a desenvolver loops e condicionais para nossos programas. Basicamente, a lógica é a mesma de qualquer linguagem de programação, basta lembrar que no Matlab os intervalos são criados com ' : ' (dois pontos).
Utilizaremos também o comando disp, que mostra o valor de alguma string ou variável no console:


%Estrutura utilizando loops e condicionais.
for i = 0:10
    disp ('Valor de i = ')
    disp (i)
    disp ('Valor de i elevado ao quadrado')
    q = i^2;
    disp (q)
    if i < 5 
    disp ('i é menor que 5') 
    else disp ('i é maior que 5')
    end
end

Algumas considerações:
- for é diferente de FOR ou For. O Matlab é case-sensitive !
- Note que o comando if não necessita de then, como em algumas linguagens
- todo loop ou condicional necessita de um end.

Utilização do while:


w = 0;
while w<2*pi
    s = sin(w);
    disp ('O seno de')
    disp (w)
    disp ('é igual a:')
    disp (sin(w))
    w = w + 0.1;
end




Com esse Tutorial, a maioria das funções básicas do Matlab está explicada e utilizando o conhecimento adquirido até agora já é possível resolver problemas simples de computação. O Blog continuará se aprofundando em questões mais complexas do Matlab, desde a criação de interfaces gráficas de usuário (GUI) até o desenvolvimento de Redes Neurais Artificiais (RNAs). Quaisquer sugestões sobre quais tópicos devem ser abordados é bem vinda !

sábado, 23 de janeiro de 2010

Criando M-Files (Arquivos .M)

Quando começamos a desenvolver idéias mais complexas, utilizar somente o console torna-se inviável. Para isso, temos a possibilidade de criar os chamados M-Files, onde podemos programar várias linhas de código para serem executadas, como em um método clássico de programação.

Para criar um novo M-File, pressione Ctrl+N ou clique no pequeno ícone que fica no canto superior esquerdo de sua janela:




Podemos fazer comentários colocando " %"  antes do início do mesmo e suprimir que a resposta de determinada linha seja mostrada no console colocando ";" no final de cada linha.

Para rodar seu programa, clique no ícone com uma seta verde, como na figura a seguir:




Para rodar o código, é necessário que ele antes seja salvo. O Matlab vai abrir automaticamente uma janela para isso.
Aqui temos um detalhe importante:  Todos os seus arquivos devem estar em diretórios reconhecidos pelo Matlab, chamados paths. Ao salvar um arquivo em algum local não reconhecido, o Matlab lhe fornecerá a opção "Add to path" que adiciona o local à lista.  Para organizar os paths, na janela principal do Matlab clique em File > Set path.  Lá você pode adicionar suas pastas que comumente utiliza para trabalhar.

sexta-feira, 8 de janeiro de 2010

Plotando gráficos - Parte IV

Da mesma maneira que podemos plotar curvas utilizando funções de variáveis simbólicas, podemos criar superfícies com esse tipo de equações. Veja o código a seguir:

%Declara as variáveis simbólicas
syms x y z
%Cria a função
z = (2*cos(x))^3 + y^2
%Cria um gráfico
ezsurf(z) 


Limpar a tela

Os dois comandos a seguir são bem úteis. O comando clear limpa as variáveis no workspace, e o clc limpa a tela de comando. Bem interessante para quando já passamos algumas horas programando, e tudo parece uma bagunça.

Plotando gráficos - Parte III

Também podemos facilmente criar gráficos tridimensionais.

A maneira mais simples é representando uma matriz em um espaço, de forma que o terceiro eixo é formado pelo valor de cala elemento da matriz. Teriamos portanto um eixo sendo as linhas, outro as colunas e um terceiro sendo o valor de cala elemento da matriz.  Veja o código a seguir :

%Cria um intervalo
A=[0:0.1:2*pi]
%Calcula o seno desse intervalo
B=sin(A)
%Calcula o cosseno desse intervalo
C=cos(A)
%Transposta de B, para multiplicar os dois vetores
B=B'
%Multiplica os dois vetores, criando uma matriz
M=B*C
%O comando surf cria uma superfície utilizando a matriz
surf(M)


quinta-feira, 7 de janeiro de 2010

Plotando gráficos - Parte II

Outra possibilidade é plotar os gráficos de uma função de variáveis simbólicas. Esse método é muito útil quando queremos visualizar funções, pois não precisamos criar os vetores. Diferentemente das variáveis normais do Matlab, as variáveis simbólicas precisam ser declaradas. Veja o exemplo:

%Declarar as variáveis simbólicas x e y
syms x y 
%Criar a função
y = x^3 -5*x^2
%Plotar
ezplot(y)

Esta função ezplot também permite que seja determinado o intervalo do gráfico:


%Declarar as variáveis simbólicas x e y
syms x y 
%Criar a função
y = x^3 -5*x^2
%Plotar
ezplot(y, [-2,2])

Plotando gráficos - Parte I

Existem várias maneiras de se plotar um gráfico, cada uma de acordo com a necessidade e dos tipos de variáveis envolvidas. analisaremos as principais técnicas e tipos de gráfico.

Basicamente, um gráfico é um conjunto de pontos ligados. Podemos, portanto, possui dois vetores e relacioná-los de forma que cada um represente um eixo, como no seguinte exemplo:

%Cria o vetor do eixo X, de 0 até 2*Pi
x = 0:0.5:2*pi
%Cria o vetor do eixo Y
y = sin(x)
%Plotar o gráfico
plot(x,y)

Seguindo este código teremos um gráfico, mas podemos observar que ele está todo "quadrado". Isso ocorre pois o vetor X possui poucos pontos, pois escolhemos um passo de 0.5 , valor muito grande. Veja o exemplo a seguir:


%Cria o vetor do eixo X, de 0 até 2*Pi
x = 0:0.01:2*pi
%Cria o vetor do eixo Y
y = sin(x)
%Plotar o gráfico
plot(x,y)

Utilizando o passo de 0.01, conseguimos uma curva senóide bem suave.

Como o Matlab está simplesmente criando coordenadas à partir dos dois vetores, qualquer tipo de gráfico pode ser plotado, desde que os vetores tenham o mesmo tamanho. Veja o exemplo a seguir:

a = 0:0.01:4*pi
x = (sin(2*a)).^3
y=(cos(3*a)).^5
plot(x,y)

terça-feira, 5 de janeiro de 2010

Matrizes úteis

Alguns tipos de matrizes podem ser feitas automaticamente, através de funções já prontas no Matlab. Essas matrizes são muito úteis, e acabam por economizar algumas linhas de código. Por exemplo:

Criar uma matriz 3x3 de zeros:
A = zeros(3,3)

Criar uma matriz  4x3 com o valor 1:
B = ones(4,3)

Criar uma matriz 5x5 com a diagonal principal valendo 1:
C = eye(5,5)

Criar uma matriz 10x10 de valores aleatórios entre 0 e 1:
D = rand(10,10)

Criando intervalos

No matlab também temos a possibilidade de criar para as nossas variáveis intervalos grandes de maneira automárica. 


Por exemplo, o vetor:


A = [ 1 2 3 4 5 6 7 8 9 10 ]


Poderia ser escrito da seguinte maneira:


A = 1:10


O comando poderia ser lido da seguinte forma:  " Faça A de 1 até 10". Os dois pontos representam que deve haver um intervalo.

Também é possível ajustar o passo desse intervalo. Digamos que seja de interesse o seguinte vetor:

B = [ 0 5 10 15 20 25 30 35 40 ]

Temos que o valor inicial é 0, o final 40 e o valor é incrementado em passos de 5.
O código ficaria da seguinte forma:

B = 0:5:40

Que pode ser lido como "Faça B de 0 até 40, em passos de 5"

De maneira genérica, temos:

N = ValorInicial : Passo : ValorFinal


Lembre-se que o valor inicial, o passo ou o valor final podem também assumir valores negativos. (desde que o intervalo seja coerente, caso contrário teremos uma matriz vazia.)

Essa lógica é muito utilizada no Matlab, inclusive nas funções for, como veremos nos próximos posts.