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.
segunda-feira, 25 de janeiro de 2010
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 !
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.
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)
%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)
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)
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:
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)
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.
Assinar:
Postagens (Atom)