Mudanças entre as edições de "Matlab em uma página"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 25: Linha 25:
 
*Algumas operações interessantes:
 
*Algumas operações interessantes:
 
  size(x) %mostra o tamanho da imagem (pixel em x e pixel em y)
 
  size(x) %mostra o tamanho da imagem (pixel em x e pixel em y)
  max(max(x)) %mostra o maior valor de uma célula desta matriz de duas dimensões
+
  max(max(x)) %mostra o maior valor encontrado nas células desta matriz de duas dimensões
  min(min(x)) %mostra o menor valor de uma célula desta matriz de duas dimensões
+
  min(min(x)) %mostra o menor valor encontrado nas células desta matriz de duas dimensões
 +
mean(mean(x)) %mostra a média dos valores desta matriz de duas dimensões
  
 
=Notas de aula=
 
=Notas de aula=

Edição das 21h46min 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 %sort é u
  • 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

Propriedades de elementos

  • Comando whois: obtém informações sobre as variáveis
whois x
  • Comando size: obtém tamanho da variável
size x

Trabalhando com imagens

  1. Copiar imagens que se deseja trabalhar para uma certa pasta
  2. Na barra de navegação do matlab buscar a pasta onde estão as imagens
    • Os arquivos deverão aparecer na visão de pastas
    • Outra forma de verificar os arquivos é dar o comando "ls" que vai listar os elementos da pasta corrente
  • Comando imread: obtém informações pixel a pixel da imagem referida gravando em uma matriz de uint8.
x = imread('imagem1.jpeg')
  • Algumas operações interessantes:
size(x) %mostra o tamanho da imagem (pixel em x e pixel em y)
max(max(x)) %mostra o maior valor encontrado nas células desta matriz de duas dimensões
min(min(x)) %mostra o menor valor encontrado nas células desta matriz de duas dimensões
mean(mean(x)) %mostra a média dos valores desta matriz de duas dimensões

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>