0% acharam este documento útil (0 voto)
14 visualizações16 páginas

Aula_Octave

O documento apresenta uma série de exemplos de código MATLAB, abrangendo desde operações básicas com variáveis e matrizes até gráficos e estruturas de controle de fluxo. Inclui também funções avançadas, como a geração de gráficos de funções matemáticas e a implementação de séries de Fourier. Os exemplos são ilustrativos e demonstram a versatilidade da linguagem MATLAB em manipulações matemáticas e visuais.

Enviado por

alissonafs
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
14 visualizações16 páginas

Aula_Octave

O documento apresenta uma série de exemplos de código MATLAB, abrangendo desde operações básicas com variáveis e matrizes até gráficos e estruturas de controle de fluxo. Inclui também funções avançadas, como a geração de gráficos de funções matemáticas e a implementação de séries de Fourier. Os exemplos são ilustrativos e demonstram a versatilidade da linguagem MATLAB em manipulações matemáticas e visuais.

Enviado por

alissonafs
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 16

Exemplos básicos:

clc​; ​clear​; ​close​ ​all​;

% Comentario

% Todas as variáveis são do tipo double


% Basta definir um valor para elas automaticamente

a = ​10

b = ​100

c = ​1000

d = a*b*c

e = a^​2​ + ​5​*b

% Se a expressão acabar com ponto-e-virgula,


% o valor resultante não aparece na linha de comando

f = e/​10​;

% Para ver todas as variáveis definidas até agora

whos

% Ver a lista atualizada com a variavel g

g = f/​1234
whos

% Apagar todas as variaveis


clear
whos

% Matriz 3x3

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

% Matriz 3x3 errada,


% fornecendo erro na linha de comando
B = ​[​1​ ​2​ 3
​ ​; ​4​ ​5​ ​6​; ​7​]

% Matriz identidade
B = ​[​1​ ​0​ ​0​; ​0​ ​1​ ​0​; ​0​ ​0​ ​1​]
% ou entao
B = ​eye​(​3​)

C = A + B

D = A

E = A*B

q = ​[​1​ ​2​ ​3​]

r = ​[​4​ ​5​ ​6​]

% O comando abaixo nao funciona,


% pois os dois vetores sao 1x3,
% impedindo a multiplicacao de um pelo outro
q*r
% O mesmo vale para o comando abaixo
r*q

% Vetor q transposto
q'
% Vetor r transposto
r'

% O comando abaixo funciona,


% gerando um resultado 1x1
q*​(​r'​)
% O comando abaixo funciona,
% gerando um resultado 3x3
(​q'​)​*r

2
% F = matriz A transposta
F = A'

s = ​[​10​ ​11​ ​12​]

% Matriz A concatenada a vetor 1x3


G = ​[​A; ​10​ ​11​ ​12​]
% Matriz A concatenada ao vetor s
H = ​[​A; s​]

% Acesso a
I​ = A​(​1​,​1​)
J​ = A​(​2​,​2​)
K = A​(​3​,​3​)
L = A​(​1​,​1​:​3​)
M = A​(​1​:​3​,​1​)
N = A​(​end​,​end​)
O = A​(​2​,​1​:​end​)

% Multiplicacao de A por ele mesmo


A^​2
% Elevar cada elemento de A ao quadrado
A.^​2

% Criar o vetor x = [1 2 3 4 5]
% de maneira mais simples
x = ​1​:​5

% Multiplicar cada elemento de x por 2


x*​2
% Criar vetor y = 2x^2+5 (elemento a elemento):
y = ​2​*x.^​2​ + ​5

% Criar vetor de 1 a 11 em passos de 2


x = ​1​:​2​:1
​ 1

% Criar vetor de 0 a 2pi em passos de pi/4


x = ​0​:​pi​/​4​:​2​*​pi

% Calcular o seno de cada elemento de x

3
y = ​sin​(​x​)

% Criar vetor x = [6 5 4 3 2 1 0]
x = ​6​:-​1:
​ ​0

% Gerar graficos
x = ​0​:​0.01​:​4​*​pi​;
y = ​sin​(​x​)​;
plot​(​x,y​)

% Mais de uma curva no mesmo grafico


plot​(​x,​sin​(​x​)​, x,​cos​(​x​))
% Outro exemplo
plot​(​x,​sin​(​x​)​, x,​cos​(​x​)​, x,​sin​(​x+​pi​)​, x,​cos​(​x+​pi​))

% Dois graficos separados, na mesma figura


X = -​2​:​0.05​:​2​;
subplot​(​121​)​, ​plot​(​X,X.^​2​)
subplot​(​122​)​, ​plot​(​X,X.^​3​-​2​*X​)

% Dois graficos estilizados e separados,


% na mesma figura
subplot​(​121​)​, ​plot​(​X,X.^​2​,​'k*'​)
title​(​'X^2'​)​;
subplot​(​122​)​, ​plot​(​X,X.^​3​-​2​*X,​'kx'​)
title​(​'X^3-2X'​)​;

% Grafico de numeros complexos


% Parte real = eixo X
% Parte imaginaria = eixo Y
t = ​0​:​pi​/​10​:​2​*​pi​;
plot​(​cos​(​t​)​+​i​*​sin​(​t​)​,​'-o'​)
axis​ equal

% Estruturas de controle de fluxo: for


for​ k = ​1​:​5
v​(​k​)​ = k^​2​;
end
v

4
% Exemplo mais complexo com 'for's aninhados
clear
for​ ​i​=​1​:​8
​for​ ​j​=​1​:​8
A​(​i​,​j​)​=​i​+​j​;
B​(​i​,​j​)​=​i​-​j​;
​end
end
A
B
C=A+B

% Estruturas de controle de fluxo: while


a=​1​; b=​15​;
while​ a<b
a=a+​1​;
b=b-​1​;
ab = ​[​a b​]
end

% Estruturas de controle de fluxo: if elseif else


a = ​1
if​ a == ​0
b = ​1
elseif​ a>​0
b = ​2
else
b = ​0
end

% Exemplo com 'for's e 'if's


clear
for​ ​i​ = ​1​:​5
​for​ ​j​ = ​1​:​5
​if​ ​i​ == ​j
A​(​i​,​j​)​ = ​2​;
​elseif​ ​abs​(​i​-​j​)​ == ​1
A​(​i​,​j​)​ = -​1​;
​else
A​(​i​,​j​)​ = ​0​;

5
​end
​end
end
A

6
Exemplos avançados:

function​ Avancado​(​entrada​)

switch​ entrada
​case​ ​0
​[​X,Y​]​ = ​meshgrid​(​-​2​:.2:​2​, -​2​:.2:​2​)​;
​figure​;
Z = ​exp​(​-X.^​2​ - Y.^​2​)​;
​close​ ​all​;
​mesh​(​X,Y,Z​)
​figure​;
​contour​(​Z,​10​)
​case​ ​1
​[​X,Y​]​ = ​meshgrid​(​-​2​:.2:​2​, -​2​:.2:​2​)​;
​figure​;
Z = X.* ​exp​(​-X.^​2​ - Y.^​2​)​;
​close​ ​all​;
​mesh​(​X,Y,Z​)
​figure​;
​contour​(​Z,​10​)
​case​ ​2
​figure​;
x = ​0​:​0.1​:​5​;
fa = x.^​2​ -​3​.*x + ​2​;
fb = ​2​*x.^​2​ +x - ​3​;
f = ​[​fa; fb​]​;
​close​ ​all​;
​plot​(​x,f​)
​title​(​'Multiplas funcões com mesma abscissa'​)
​xlabel​(​'x'​)
​grid​ on
​legend​(​'f1'​,​'f2'​)

​figure​;
x = ​0​:​0.1​:​5​;
f1 = x'.^​2​ -​3​.*x' +​2​;
f2 = ​2​*x'.^​2​ +x' -​3​;
​plotyy​(​x,f1,x,f2​)

7
​title​(​'Abscissas distintas para diferentes funcoes'​)
​xlabel​(​'x'​)
​grid
​case​ ​3
​figure​;
dados1 = ​2​*​rand​(​1​,​500​)​ + ​2​; ​% rand --> [0 1], uniforme
dados2 = ​randn​(​1​,​500​)​+​3​; ​% randn --> [-1 1],
gaussiano ou normal
​close​ ​all​;
​subplot​(​2​,​1​,​1​)​,​plot​(​dados1​)
​axis​([​0​ ​500​ ​0​ ​6​])
​title​(​'Numeros Aleatorios - dados1'​)
​subplot​(​2​,​1​,​2​)​,​plot​(​dados2​)
​title​(​'Numeros Aleatorios - dados2'​)
​xlabel​(​'Indice'​)
​% Estatísticas
​format​ short
min1 = ​min​(​dados1​)
max1 = ​max​(​dados1​)
media1 = ​mean​(​dados1​)
min2 = ​min​(​dados2​)
max2 = ​max​(​dados2​)
media2 = ​mean​(​dados2​)
​figure​;
bins1 = ​10​; ​% 10 intervalos
​subplot​(​2​,​1​,​1​)
​hist​(​dados1,bins1​)
​xlabel​(​'intervalos'​)
​ylabel​(​'contagens'​)
​title​(​'Histograma - dados1'​)
bins2 = ​[​0​ ​0.5​ ​1​ ​1.5​ ​2​ ​2.5​ ​...
​3​ ​3.5​ ​4​ ​4.5​ ​5​ ​5.5​ ​6​]​; ​% Especificação
de intervalos
​subplot​(​2​,​1​,​2​)
​hist​(​dados2,bins2​)
​xlabel​(​'intervalos'​)
​ylabel​(​'contagens'​)
​title​(​'Histograma - dados2'​)
​case​ ​4
t=​[​0​:​256​]​'/​256​;

8
w0=​2​*​pi​; x=square​(​w0*t​)​;
​disp​(​'Série de Fourier de uma onda quadrada!'​)
​disp​(​' '​)
cont=​1​;
​close​ ​all​;
​while​ cont==​1
nin=​input​(​'Quantos harmônicos deseja utilizar
na aproximação? '​)​;
​if​ nin ~= 0
xhat=​zeros​(​size​(​x​))​;
​for​ k=​1​:​2​:nin
Xhat = xhat +
sin​(​k*w0*t​)​*​4​/​(​k*​pi​)​;
​end
​figure​;
​plot​(​t,x,t,xhat​)
​xlabel​(​'Tempo(s)'​)
​title​([​'Sinal composto de '​,
num2str​(​nin​)​, ​' harmonicos.'​])​;
​else
cont=​0​;
​end
​end
​case​ ​5
y = ​[​0​ ​2​ ​5​ ​4​ ​1​ ​0​]​;
​plot​(​y​)
t = ​0​:.4:​4​*​pi​;
y = ​sin​(​t​)​;
z = ​cos​(​t​)​;
​close​ ​all​;
​plot​(​t, y, t, z​)
​title​(​'Funcoes'​)
​xlabel​(​'t'​)
​ylabel​(​'Seno e Cosseno'​)
text​(​2.8​, ​0.4​, ​'Seno'​)
​gtext​(​'Cosseno'​)
​case​ ​6
​figure​;
x = ​0​:​0.5​:​50​; y = ​5​*x.^​2​;
​close​ ​all​;

9
​subplot​(​2​,​2​,​1​)​,​plot​(​x,y​)
​title​(​'Polinomio - linear/linear (plot)'​)​,
ylabel​(​'y'​)​, ​grid
​subplot​(​2​,​2​,​2​)​,​semilogx​(​x,y​)
​title​(​'Polinomio - log/linear (semilogx)'​)​,
ylabel​(​'y'​)​, ​grid
​subplot​(​2​,​2​,​3​)​,​semilogy​(​x,y​)
​title​(​'Polinomio - linear/log (semilogy)'​)​,
xlabel​(​'x'​)
​ylabel​(​'y'​)​, ​grid
​subplot​(​2​,​2​,​4​)​,​loglog​(​x,y​)
​title​(​'Polinomio - log/log (loglog)'​)​, ​xlabel​(​'x'​)
​ylabel​(​'y'​)​, ​grid
​case​ ​7
​close​ ​all​;
​figure​; ​% Forma Retangular
z1 = ​1.5​ + ​0.5j​;
z2 = ​0.5​ + ​1.5j​;
z3 = z1 + z2;
z4 = z1 * z2;
​axis​([​-​3​ ​3​ -​3​ ​3​])​;
​axis​ square;
​grid​ on;
​hold​ on;
​plot​(​z1,​'b.'​)​;
​plot​(​z2,​'go'​)​;
​plot​(​z3,​'rx'​)​;
​plot​(​z4,​'m*'​)​;
text​(​real​(​z1​)​+ ​0.1​,​imag​(​z1​)​,​'z1'​)​;
text​(​real​(​z2​)​+ ​0.1​,​imag​(​z2​)​,​'z2'​)​;
text​(​real​(​z3​)​+ ​0.1​,​imag​(​z3​)​,​'z1+z2'​)​;
text​(​real​(​z4​)​+ ​0.1​,​imag​(​z4​)​,​'z1*z2'​)​;
​xlabel​(​'Parte Real'​)
​ylabel​(​'Parte Imaginária'​)
​title​(​'Plano Complexo - Forma Retangular'​)

​figure​; ​% Forma Vetorial


​axis​([​-​3​ ​3​ -​3​ ​3​])​;
​axis​ square;
​grid​ on;

10
​hold​ on;
​plot​(​z1,​'b.'​)​;
​plot​(​z2,​'go'​)​;
​plot​(​z3,​'rx'​)​;
​compass​(​z1​)​;
​compass​(​z2​)​;
​compass​(​z3​)​;
text​(​real​(​z1​)​+​0.1​,​imag​(​z1​)​,​'z1'​)​;
text​(​real​(​z2​)​+​0.1​,​imag​(​z2​)​,​'z2'​)​;
text​(​real​(​z3​)​+​0.1​,​imag​(​z3​)​+​0.1​,​'z1+z2'​)​;
​xlabel​(​'Parte Real'​)
​ylabel​(​'Parte Imaginária'​)
​title​(​'Plano Complexo - Forma Vetorial'​)
end

11
Processamento de imagens

%Limpar tela e variaveis, fechar figuras


clc​; ​close​ ​all​; ​clear​;

% Ler a imagem 'lena.png'


a = ​imread​(​'lena.png'​)​;

% Conferir tamanho de 'a', que deve ser


% 512x512x3. Esta ultima dimensao representa
% os canais RGB (vermelho, verde e azul),
% todos de dimensao 512x512
size​(​b​)

% Conferir variaveis existentes.


% Deve existir somente a matriz 'a',
% de tipo uint8 (inteiro sem sinal de 8 bits)
% e de tamanho 512x512x3.
whos

% Mostrar a imagem armazenada na matriz 'a'


imshow​(​a​)

% 'b' e a versao double de 'a'


b = ​double​(​a​)​;
% Conferir os 100 pixels do canto superior esquerdo
% de cada canal RGB de 'b'
b​(​1​:​10​,​1​:​10​,​1​)
b​(​1​:​10​,​1​:​10​,​2​)
b​(​1​:​10​,​1​:​10​,​3​)

% Criar 'c', de tamanho 512x512,


% a partir da media dos 3 canais RGB de 'b'
c = ​(​b​(​:,:,​1​)​ + b​(​:,:,​2​)​ + b​(​:,:,​3​))​/​3​;
% Conferir tamanho de 'c'
size​(​c​)

% Mostrar a imagem armazenada na matriz 'c'.


% Deve ser a versao em tons de cinza da matriz 'a'

12
imshow​(​uint8​(​c​))

% Outra forma de obter a versao em tons de cinza da matriz 'a'.


% Conferir tamanho de 'c' e mostrar esta imagem.
c = rgb2gray​(​a​)​;
size​(​c​)
imshow​(​uint8​(​c​))

% Dividir a imagem 'lena.png' em quatro partes iguais


d = c​(​1​:​256​, ​1​:​256​)​;
e = c​(​1​:​256​, ​257​:​512​)​;
f = c​(​257​:​512​, ​1​:​256​)​;
g = c​(​257​:​512​, ​257​:​512​)​;

% Mostrar a imagem "recortada"


subplot​(​221​)​; imshow​(​uint8​(​d​))
subplot​(​222​)​; imshow​(​uint8​(​e​))
subplot​(​223​)​; imshow​(​uint8​(​f​))
subplot​(​224​)​; imshow​(​uint8​(​g​))

% Limpar tudo
clear​; ​close​ ​all​; ​clc​;

% Guardar a versao em tons de cinza de 'lena.png' na matriz 'b'


a = ​imread​(​'lena.png'​)​;
b = rgb2gray​(​a​)​;

% Multiplicar 'b' por valores constantes


% maiores e menores do que 1 e conferir o resultado
imshow​(​uint8​(​b​))
imshow​(​uint8​(​b*​0.75​))
imshow​(​uint8​(​b*​0.5​))
imshow​(​uint8​(​b*​0.25​))
imshow​(​uint8​(​b*​1.25​))
imshow​(​uint8​(​b*​1.5​))
imshow​(​uint8​(​b*​1.75​))

% Obter a versao reduzida (de tamanho 256x256) de 'b'


c = imresize​(​b,​1​/​2​,​'nearest'​)​;
% Aumentar a versao 256x256 de volta para o tamanho 512x512

13
d = imresize​(​c,​2​,​'nearest'​)​;
% Obter a versao reduzida (de tamanho 128x128) de 'b'
e = imresize​(​b,​1​/​4​,​'nearest'​)​;
% Aumentar a versao 128x128 de volta para o tamanho 512x512
f = imresize​(​e,​4​,​'nearest'​)​;
% Obter a versao reduzida (de tamanho 64x64) de 'b'
g = imresize​(​b,​1​/​8​,​'nearest'​)​;
% Aumentar a versao 64x64 de volta para o tamanho 512x512
h = imresize​(​g,​8​,​'nearest'​)​;

% Visualizar o original e as diferentes


% versoes reduzidas e aumentadas
figure​;
imshow​(​uint8​(​b​))
figure​;
imshow​(​uint8​(​d​))
figure​;
imshow​(​uint8​(​f​))
figure​;
imshow​(​uint8​(​h​))

% Limpar tudo
clear​; ​close​ ​all​; ​clc​;

% Guardar a versao em tons de cinza de 'lena.png' na matriz 'b'


a = ​imread​(​'lena.png'​)​;
b = rgb2gray​(​a​)​;
% Mostrar a versao em tons de cinza de 'lena.png'
figure​;
imshow​(​uint8​(​b​))​;
% Mostrar o histograma da imagem 'lena.png'
figure​;
imhist​(​double​(​b​))​;

% Guardar a versao em tons de cinza de 'mandrill.png' na matriz 'b'


a = ​imread​(​'mandrill.png'​)​;
b = rgb2gray​(​a​)​;
% Mostrar a versao em tons de cinza de 'mandrill.png'
figure​;
imshow​(​uint8​(​b​))​;

14
% Mostrar o histograma da imagem 'mandrill.png'
figure​;
imhist​(​double​(​b​))​;

% Girar em 90 graus a versao em tons de


% cinza de 'lena.png', e mostrar esta versao
c = imrotate​(​b,​90​,​'bilinear'​)​;
imshow​(​uint8​(​c​))​;

% Girar em 45 graus a versao em tons de


% cinza de 'lena.png', e mostrar esta versao
c = imrotate​(​b,​45​,​'bilinear'​)​;
imshow​(​uint8​(​c​))​;

% Limpar tudo
close​ ​all​; ​clear​; ​clc​;

% Guardar as imagens 'lena.png' e 'mandrill.png'


% nas matrizes 'a' e 'b', respectivamente
a = ​imread​(​'lena.png'​)​;
b = ​imread​(​'mandrill.png'​)​;

% Somar 'a' e 'b' de forma ponderada, e mostrar o resultado


c = ​0.5​*a+​0.5​*b;
imshow​(​c​)​;

% Somar 'a' e 'b' de forma ponderada, e mostrar o resultado


c = ​0.25​*a+​0.75​*b;
imshow​(​c​)​;

% Somar 'a' e 'b' de forma ponderada, e mostrar o resultado


c = ​0.75​*a+​0.25​*b;
imshow​(​c​)​;

% Limpar tudo
close​ ​all​; ​clear​; ​clc​;

% Guardar a versao em tons de cinza de 'lena.png' na matriz 'b'


a = ​imread​(​'lena.png'​)​;
b = rgb2gray​(​a​)​;

15
% Adicionar ruido a versao em tons de cinza de 'lena.png'
c = imnoise​(​b,​'speckle'​)​;
% Filtrar a imagem com ruido utilizando o filtro de mediana 3x3
% (http://en.wikipedia.org/wiki/Median_filter)
d = medfilt2​(​c,​ones​(​3​))​;
% Mostrar a imagem com ruido e a imagem filtrada
figure​;
imshow​(​uint8​(​c​))​;
figure​;
imshow​(​uint8​(​d​))​;

% Fechar todas as figuras


close​ ​all​;
% Filtrar a imagem com ruido utilizando o filtro de mediana 7x7
e = medfilt2​(​c,​ones​(​7​))​;
% Mostrar a imagem com ruido e a imagem filtrada
figure​;
imshow​(​uint8​(​c​))​;
figure​;
imshow​(​uint8​(​e​))​;

16

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy