Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII
Programação em MATLAB
• Funções de Entrada / Saída
• Construção de gráficos
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Entrada / Saída de dados
2222
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida input
3333
Descrição: apresenta uma mensagem e solicita uma entrada do utilizador pela linha de comandos
Sintaxe: user_entry = input('prompt') user_entry = input('prompt', 's‘)
>> Numero_Aluno = input('Número de aluno: ') Número de aluno: 55555
>> Nome_Aluno = input('Nome: ','s') Nome: João Manuel
>> Nota_Aluno = input(‘Nota: ','s') Nota: 10.5
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida disp
4444
Descrição: apresenta o conteúdo de um vector no ecrã
Sintaxe: disp(X)
>> X = ['Nome: ', NomeAluno];
>> disp(X)
Nome: João Manuel
>> X = ['Número: ', NumeroAluno];
>> disp(X) Número:
>> X = ['Número: ', num2str(NumeroAluno)];
>> disp(X) Número: 55555
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida fprintf
5555
Descrição: apresenta o conteúdo formatado de uma cadeia de caracteres no ecrã
Sintaxe: fprintf(text)
fprintf(format, var)
% 0- 12 .5 u Inicio da
especificação
Flags Precisão
Caracter de controlo Tamanho
da cadeia Especificação da cadeia de formatação:
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Utilização de caracteres de formatação
6666
Descrição Caracteres Descrição
Flags
Sinal - Sinal + Espaço
Zero
Justificação à esquerda
Impressão do caracter de sinal ("+"ou "-") Insere espaço em branco
Enche espaço disponível com zeros
Caracteres de formatação
\n
\t
\b
%%
New line Horizontal tab Backspace
Símbolo de percentagem
Caracteres de controlo
%c
%d,%i
%u
%f
%s
Single character
Decimal notation (signed) Decimal notation (unsigned) Fixed-point notation String of characters
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida fprintf
7777
>> fprintf('Hello \n') Hello
>> fprintf('Maio é o %dº mês do Ano.\n',5) Maio é o 5º mês do Ano.
>> r = 1;, fprintf('Área circulo = %f m2.\n', pi*r^2) Área circulo unitário 3.141593 m2.
>> B = [9.9 8.8 7.7; 9900 8800 7700];
>> fprintf('X é %6.2f metros ou %8.3f mm\n‘, B) X é 9.90 metros ou 9900.000 mm
X é 8.80 metros ou 8800.000 mm X é 7.70 metros ou 7700.000 mm
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida fprintf
8888
Descrição: grava num ficheiro o conteúdo formatado de uma cadeia de caracteres
Sintaxe: fprintf(fid,text)
fprintf(fid,format, var)
fid = fopen(nome, permissões) fclose(fid)
>> x = 0:.1:1;
>> y = [x; exp(x)];
>> fid = fopen('exp.txt', 'wt');
>> fprintf(fid, '%6.2f %12.8f\n', y);
>> fclose(fid)
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida save
9999
Descrição: grava num ficheiro um conjunto de variáveis sem formatação
Sintaxe: save
save NomeFicheiro Variáveis save(NomeFicheiro, 'Variáveis')
>> save NomeFicheiro a*
>> save ficheiro.mat v1
>> save 'meu ficheiro.mat' v1
>> save(NomeFicheiro, 'v1‘)
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida load
10 1010 10
Descrição: carrega de um ficheiro para o workspace um conjunto de variáveis sem formatação
Sintaxe: save
save NomeFicheiro Variáveis save(NomeFicheiro, 'Variáveis')
>> load NomeFicheiro a*
>> load ficheiro.mat
>> load 'meu ficheiro.mat'
>> d = load(NomeFicheiro, 'v1')
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Gráficos em MATLAB
11 1111 11
• Construção fácil de gráficos a partir de dados armazenados em matrizes e vectores
• Altamente customizável
• Grande diversidade de tipos de gráficos
• Possível em 2D e 3D
• Possibilidade de exportação para outros formatos (PNG, BMP, JPG)
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Tipos de gráficos 2D
12 1212 12
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Tipos de gráficos 3D
13 1313 13
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Ambiente gráfico: Figure Window
14 1414
Tipos de linha 14
Eixos
Toolbar Figure Window Dockingno Matlab
Plot Objects
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Funcionalidades da Toolbar
15 1515 15
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Função pré-definida plot
16 1616 16
Parameterização das características do gráfico:
Descrição: construção de gráficos 2D na Figure Windowactual
Sintaxe: plot(Y) plot(X,Y) plot(X,Y,S)
'
Inicio da string
c
Cor
--
Tipo de linha
'
Fim da string
d
Marcadores
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Parameterização da função plot
17 1717 17
Cor Marcadores Tipo de linha
b c g k m r y
blue cyan green black magenta red yellow
o d h p + . s
* v
<
>
^ x
circle diamond hexagram pentagram plus point square star down left triangle right triangle up triangle x-mark
-- -.
: -
dashed dash dot dotted solid
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Representação de vectores x-y
18 1818 18
» x = 1:6;
» y = [1 5 3 9 11 8];
» plot(x,y)
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Construção de outros tipos de gráficos
19 1919 19
Comando Descrição
plot3 construção de gráficos 3D
bar construção de gráficos 2D de barras verticais barh construção de gráficos 2D de barras horizontais stem construção de gráficos 2D do tipo discreto stairs construção de gráficos 2D do tipo escada
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Funções adicionais
20 2020 20
Comando Descrição
clf apaga o gráfico na Figure Windowcorrente close fecha aFigure Windowcorrente
figure abre/acede à Figure Windowespecificada
hold congela o grafico representado na Figure Window legend coloca a legenda na Figure Window
title coloca o titulo na Figure Window xlabel coloca um rótulo no eixo das abcissas ylabel coloca um rótulo no eixo das ordenadas grid coloca uma grelha no background do gráfico axis formata a gama de valores nos eixos do gráfico
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
» x = 11;
» y = 48;
» plot(x,y,'r*')
»
» axis([9 12 35 55])
» xlabel('Time')
» ylabel('Temperature‘)
Propriedades dos gráficos
21 2121 21
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Representação de múltiplos gráficos
22 2222 22
» clf
» x = 0: 2*pi/40: 2*pi;
» y = sin(x);
» plot(x,y,'ro')
» hold on
» y = cos(x);
» plot(x,y,'b+')
» legend('sin', 'cos')
» title('sin and cos on one graph‘)
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
» clf
» x = 1:5; y1 = [2 11 6 9 3];
» y2 = [4 5 8 6 2];
» figure(1)
» bar(x,y1) % Gráfico de Barras
» figure(2)
» plot(x,y1,'k')
» hold on
» plot(x,y2,'ko')
» grid on
» legend('y1','y2‘)
Gráficos de barras, grelha e legenda
23 2323 23
Fígura 1
Fígura 2
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Gráficos a partir de dados em ficheiro
24 2424 24
» load timetemp.dat
» time = timetemp(1,:);
» temp = timetemp(2,:);
» plot(time,temp,'k+')
» xlabel('Time')
» ylabel('Temperature')
» title('Temperatures one afternoon')
»
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
>> x = -pi:pi/10:pi;
>> y = tan(sin(x)) - sin(tan(x));
>> plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)
Formatação avançada de gráficos
25 2525 25
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Trabalhar com o Plot Edit Mode
26 2626 26
Adicionar legenda, texto e setas Botão para modo de edição
Double-click para seleccionar objecto Posicionar rótulos e outros objectos por click e arrasto
Click no botão direito do rato para aceder às propriedades do objecto
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Trabalhar com o Ploting Tools
27 2727 27
Figure Pallete Axes subplots Lineseries Figure Plot browser
Property Inspector Property Editor Adicionar dados
Activar as Ploting Tools
José Borges
José Borges -- Miguel Miguel Pedro Pedro SilvaSilva Computação e Programação 2009 / Computação e Programação 2009 / 20102010
Referências
28 2828 28
• Capítulo 2 de Stormy Attaway (2009), “Matlab: A Practical Introduction to Programming and Problem Solving”, Elsevier.
• Manuais do MATLAB
• Graphics