Mudanças entre as edições de "Matlab em uma página"
Linha 1: | Linha 1: | ||
+ | =Funções de ajuda= | ||
+ | *Comando help: mostra ajuda sobre uma função especifica na janela de comando | ||
+ | ex.: > help sort | ||
+ | *Comando doc: abre a janela de help da função especificada | ||
+ | ex.: > doc input | ||
+ | *Comando lookfor: procura pela palavra especificada em toda a documentação do matlab | ||
+ | ex.: > lookfor fill | ||
+ | |||
+ | =Notas de aula= | ||
<code> | <code> | ||
%-- 20-03-2017 19:07:54 --% | %-- 20-03-2017 19:07:54 --% |
Edição das 19h24min de 12 de abril de 2017
Funções de ajuda
- Comando help: mostra ajuda sobre uma função especifica na janela de comando
ex.: > help sort
- Comando doc: abre a janela de help da função especificada
ex.: > doc input
- Comando lookfor: procura pela palavra especificada em toda a documentação do matlab
ex.: > lookfor fill
Notas de aula
%-- 20-03-2017 19:07:54 --%
%Aula 5, 20/mar
%Endereçamento lógico
v = [1 2 3 4 3 2 1 2]
v([2, 4, 5])
v([false,true,false,true,true,false,false,false])
v >= 3
sum(v>=3)
indices = v >= 3
v(indices)
v(2:5)
u = [1 0 3]
v = [2 5 1 5]
w = [u v]
z = [u, v]
a= [1 2 3; 4 5 6]
b=[10 10 0;10 0 10]
c = [a;b]
z = [u;a]
sort(v)
help sort
sort(v,'descend')
find(u)
v == 5
find(v == 5)
mean(v)
sum(v) / length(v)
mean(a)
mean(mean(a))
lookfor median
u
v
median(v)
ceil(v)
w = [1.2 5 5.8 6.5 9]
ceil(w)
floor(w)
round(w)
t1=[5 5.5 6.5 6 6.25]
t2=[40 43 37 50 45]
t3=[1000 1100 1000 1200 1100]
r1 = t1 .* t2
r2 = sum(r1)
r3 = sum(t3)
r4 = r2 ./ r3
r5 = sum(t2) / sum(t3)
r6 = ((t1 .* t2) ./ t3)
[k, l] = min(r6)
[k, l] = max(r6)
</syntaxhighlight>
%-- 22-03-2017 19:10:04 --%
% aula de 22/mar
var1 = 'Aspas simples definem a variavel como texto'
numero1 = 3
numero1 = 'texto'
var1(1)
var1(1:7)
var1(1:7)'
var1
var3 = [var1, '!']
titulo = 'Numero plot = a: '
numero_plot = 1
titulo_completo = [titulo, numero_plot]
titulo_completo = [titulo, num2str(numero_plot)]
m = ['Plot 1';'Plot 2';'Plot 3']
m(1,:)
m(:,end)
m(:,1)
m(:,end-2)
m(:,end-3:end)
m(:,1:2:end)
clc
%Entrada e saida de dados
Resposta1 = input('Entre com um número: ')
12
Resposta2 = input('Entre seu nome: ');
titulo
Resposta2 = input('Entre seu nome: ');
'Cleber'
doc input
Resposta2 = input('Entre seu nome: ','s');
Cleber
clc
%Mostrando os resultados
Resposta2 = input('Entre seu nome: ','s')
Cleber
Confirm = input(['Voce digitou "',Resposta2,'", confirma?'],'s')
sim
%Comando disp
clc
disp('Frase a ser exibida')
disp(['Voce digitou "',Resposta2,'"'])
numero1 = 48
disp(['Voce digitou ',numero1])
disp(['Voce digitou ',num2str(numero1)])
num1 = [1 2 5 98 2]
num2 = {1 2 5 98 2}
num1(3) = 8
num2{3} = 8
num2{3} = 'texto'
num2{5} = [1 2 3;4 5 6]
num2(5)
num2{5}
titulo = {'Senoide';'Função logaritmica';'Reta'}
size(titulo)
length(titulo)
titulo(1)
titulo{1}
%Concatenação
nova_celula = {titulo{1},titulo{2}}
nova_celula = {titulo(1),titulo(2)}
nova_celula = [titulo(1),titulo(2)]
nova_celula = [titulo(1),titulo{2}]
nova_celula(2)
nova_celula{2}
%Operações
celula_numerica = {12, 42}
celula_numerica'
celula_numerica(1)
celula_numerica{1}
celula_numerica{1} + celula_numerica{1}
celula_numerica{1} = [1 2]
celula_numerica{1} + celula_numerica{1}
celula_numerica{1} + celula_numerica{2}
title(titulo{1})
figure
title(titulo{2})
celula_matriz = {12,'Olá';[1 2 3],[4; 5; 6]}
celula_matriz{2,:}
lookfor right
lookfor fill
str1 = 'nome 1'
zeros(1, 15 - length(str1))
doc cellplot
%Estruturas
banco.nome = 'IFSC'
banco.idade = 108
banco.alunos = 35000
banco
banco.idade
banco(1)
banco(2).nome = 'santander'
banco(2).idade = 200
banco(2).alunos = 20000
doc struct
isfield(banco,'idade')
isfield(banco,'cor')
rmfield(banco,'alunos')
[str1,zeros(1, 15 - length(str1))]
cleber2
cellplot(struct2cell(pontes))
find(pontes(2).localizacao == 'Clark St.')
pontes(2).localizacao == 'Clark St.'
pontes(3).localizacao == 'Clark St.'
find(pontes(3).localizacao == 'Clark St.')
</syntaxhighlight>
peso = input('Entre com seu peso em kg: ');
altura = input('Entre com sua altura em metros: ');
disp(['Seu IMC é: ',num2str(peso./(altura.^2))]);
</syntaxhighlight>
idpontes = 1
pontes(idpontes).localizacao = 'Smith St.';
pontes(idpontes).CargaMax = 80;
pontes(idpontes).Ano = 1928;
pontes(idpontes).AgendaManutencao = 2011;
idpontes = 1 + idpontes
pontes(idpontes).localizacao = 'Hope Ave.';
pontes(idpontes).CargaMax = 90;
pontes(idpontes).Ano = 1950;
pontes(idpontes).AgendaManutencao = 2013;
idpontes = 1 + idpontes
pontes(idpontes).localizacao = 'Clark St.';
pontes(idpontes).CargaMax = 85;
pontes(idpontes).Ano = 1933;
pontes(idpontes).AgendaManutencao = 2012;
idpontes = 1 + idpontes
pontes(idpontes).localizacao = 'North Rd.';
pontes(idpontes).CargaMax = 100;
pontes(idpontes).Ano = 1960;
pontes(idpontes).AgendaManutencao = 2012;
pontes(3).AgendaManutencao = 2018
idpontes = 1 + idpontes
pontes(idpontes).localizacao = 'Shore Rd.';
pontes(idpontes).CargaMax = 85;
pontes(idpontes).Ano = 1997;
pontes(idpontes).AgendaManutencao = 2014;
struct2table(pontes)
</syntaxhighlight>
%Calculadora Switch com Dialog
%Perguntar qual operação deseja utilizar
%Pedir os dois argumentos para realizar a operação
operacao = inputdlg('Digite (+) para soma, (-) para subtração, (*) para multiplicação e (/) para divisão: ')
switch operacao{1}
case '+'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) + str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
case '-'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) - str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
case '*'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) * str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
case '/'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
if str2num(arg2) ~= 0
resultado = str2num(arg1) / str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
else
disp('Não é possível realizar a divisão por zero!')
end
otherwise
disp('Operação inválida!')
end
</syntaxhighlight>
%Calculadora For
%Perguntar qual operação deseja utilizar
%Pedir os dois argumentos para realizar a operação
for i = 1:3
disp(['Execução: ',int2str(i)])
operacao = inputdlg('Digite (+) para soma, (-) para subtração, (*) para multiplicação e (/) para divisão: ');
if strcmp(operacao,'+')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'));
resultado = str2num(arg1) + str2num(arg2);
disp(['Resultado: ',int2str(resultado)])
elseif strcmp(operacao,'-')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'));
resultado = str2num(arg1) - str2num(arg2);
disp(['Resultado: ',int2str(resultado)])
elseif strcmp(operacao,'*')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'));
resultado = str2num(arg1) * str2num(arg2);
disp(['Resultado: ',int2str(resultado)])
elseif strcmp(operacao,'/')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'));
if str2num(arg2) ~= 0
resultado = str2num(arg1) / str2num(arg2);
disp(['Resultado: ',int2str(resultado)])
else
disp('Não é possível realizar a divisão por zero!')
end
else
disp('Operação inválida!')
end
end
</syntaxhighlight>
%Calculadora Switch
%Perguntar qual operação deseja utilizar
%Pedir os dois argumentos para realizar a operação
operacao = input('Digite (+) para soma, (-) para subtração, (*) para multiplicação e (/) para divisão: ','s')
switch operacao
case '+'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) + str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
case '-'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) - str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
case '*'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) * str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
case '/'
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
if str2num(arg2) ~= 0
resultado = str2num(arg1) / str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
else
disp('Não é possível realizar a divisão por zero!')
end
otherwise
disp('Operação inválida!')
end
</syntaxhighlight>
%Calculadora
%Perguntar qual operação deseja utilizar
%Pedir os dois argumentos para realizar a operação
operacao = inputdlg('Digite (+) para soma, (-) para subtração, (*) para multiplicação e (/) para divisão: ')
if strcmp(operacao,'+')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) + str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
elseif strcmp(operacao,'-')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) - str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
elseif strcmp(operacao,'*')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
resultado = str2num(arg1) * str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
elseif strcmp(operacao,'/')
[arg1,arg2] = strtok(input('Digite os dois números separados por espaço: ','s'))
if str2num(arg2) ~= 0
resultado = str2num(arg1) / str2num(arg2)
disp(['Resultado: ',int2str(resultado)])
else
disp('Não é possível realizar a divisão por zero!')
end
else
disp('Operação inválida!')
end
</syntaxhighlight>
%Filtro de segunda ordem
x = 1:1:1000;
y = 1 ./ (1 + x.^2)
loglog(x,y,'bo')
hold off
loglog(x,y,'bo')
x = logspace(0,3,1000)
y = 1 ./ (1 + x.^2)
loglog(x,y,'bo')
x = 1:1:50;
y = 1 ./ (1 + x.^2)
loglog(x,y,'bo')
x = logspace(0,3,50);
y = 1 ./ (1 + x.^2)
y = 1 ./ (1 + x.^2);
loglog(x,y,'bo')
</syntaxhighlight>
%plotlob
x = 1 : 0.1 : 1000;
y = 1 ./ (1 + x.^2)
subplot(2,2,1) %cria um subplot 2x2 e seleciona primeiro quadro
plot (x,y)
grid on
subplot(2,2,2)
semilogx(x,y)
grid on
subplot(2,2,3)
semilogy(x,y)
grid on
subplot(2,2,4)
loglog(x,y)
grid on
</syntaxhighlight>
%polar
convert2deg(pi/6)
t = 0:0.01:6*pi
r = linspace(1,0,1885)
r = linspace(1,0,length(t));
polar(t,r)
plot(t,r)
r = logspace(1,0,length(t))
polar(t,r)
figure
plot(t,r)
</syntaxhighlight>
%Stairs
x=0:10
y=x.^2
plot(x,y)
hold on
stairs(x,y)
grid on
</syntaxhighlight>
%plot
x=0:0.01:4*pi
4*pi
cos(x)
y = cos(x)
plot(x,y)
hold on
z = sin(x);
stem(x,z)
x(1:50:end)
z(1:50:end)
plot(x,y)
hold on
stem(x,z)
hold off
plot(x,y)
hold on
stem(x,z)
hold off
stem(x(1:50:end),z(1:50:end))
stem(y(1:50:end),z(1:50:end))
stem(x(1:50:end),z(1:50:end))
hold on
stem(y(1:50:end),z(1:50:end))
hold off
stem(x(1:50:end),z(1:50:end))
hold on
stem(x(1:50:end),y(1:50:end))
plot(x,z,'b')
plot(x,y,'r')
bar(x(1:50:end),y(1:50:end),'r')
bar(x(1:50:end),z(1:50:end),'b')
</syntaxhighlight>
%plot 3D
t = 0:0.1:10*pi
clc
x = cos(t);
y = sin(t);
z = t;
figure
plot3(x,y,z)
grid on
xlabel('x');ylabel('y');zlabel('z');
view(-90,0)
view(0,0)
%Grade 3D
[X,Y] = meshgrid(-20:0.5:20);
[X,Y] = meshgrid(-20:0.5:20)
R = sqrt(X.^2 + Y.^2) + eps;
clc
Z = sin(R)./R;
mesh(X,Y,Z)
eps
surf(X,Y,Z)
shading flat
clc
shading faceted
shading interp
surfc(X,Y,Z)
contour(X,Y,Z)
meshc(X,Y,Z)
shading interp
meshz(X,Y,Z)
waterfall(X,Y,Z)
</syntaxhighlight>
%plotyy
clc
x = linspace(0 , 4*pi, 1000)
clc
y = 2*sin(x);
z = 30*cos(2*x);
help plotyy
plotyy(x,y,x,z)
doc plotyy
legend('Tensão (V)','Corrente (A)')
doc comet
t = 0:.01:2*pi;
x = cos(2*t).*(cos(t).^2);
y = sin(2*t).*(sin(t).^2);
comet(x,y);
</syntaxhighlight>