Programação em MATLAB Funções de Entrada / Saída Construção de gráficos Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Entrada / Saída de dados 2 1
Função pré-definida input 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 3 Função pré-definida disp 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 4 2
Função pré-definida fprintf Descrição: apresenta o conteúdo formatado de uma cadeia de caracteres no ecrã Sintaxe: fprintf(text) fprintf(format, var) Especificação da cadeia de formatação: % 0-12.5 u Inicio da especificação Flags Tamanho da cadeia Caracter de controlo Precisão 5 Utilização de caracteres de formatação Descrição Caracteres Descrição Flags Caracteres de formatação Caracteres de controlo Sinal - Sinal + Espaço Zero \n \t \b %% %c %d,%i %u %f %s Justificação à esquerda Impressão do caracter de sinal ("+" ou "-") Insere espaço em branco Enche espaço disponível com zeros New line Horizontal tab Backspace Símbolo de percentagem Single character Decimal notation (signed) Decimal notation (unsigned) Fixed-point notation String of characters 6 3
Função pré-definida fprintf >> 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 7 Função pré-definida fprintf 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) 8 4
Função pré-definida save 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 ) 9 Função pré-definida load 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') 10 5
Gráficos em MATLAB 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) 11 Tipos de gráficos 2D 12 6
Tipos de gráficos 3D 13 Ambiente gráfico: Figure Window Toolbar Figure Window Docking no Matlab Plot Objects Eixos Tipos de linha 14 7
Funcionalidades da Toolbar 15 Função pré-definida plot Descrição: construção de gráficos 2D na Figure Window actual Sintaxe: plot(y) plot(x,y) plot(x,y,s) Parameterização das características do gráfico: ' c d -- ' Inicio da string Fim da string Cor Marcadores Tipo de linha 16 8
Parameterização da função plot b c g k m r y Cor Marcadores Tipo de linha 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 17 Representação de vectores x-y» x = 1:6;» y = [1 5 3 9 11 8];» plot(x,y) 18 9
Construção de outros tipos de gráficos Comando plot3 bar barh stem stairs Descrição construção de gráficos 3D construção de gráficos 2D de barras verticais construção de gráficos 2D de barras horizontais construção de gráficos 2D do tipo discreto construção de gráficos 2D do tipo escada 19 Funções adicionais Comando clf close figure hold legend title xlabel ylabel grid axis Descrição apaga o gráfico na Figure Window corrente fecha a Figure Window corrente abre/acede à Figure Window especificada congela o grafico representado na Figure Window coloca a legenda na Figure Window coloca o titulo na Figure Window coloca um rótulo no eixo das abcissas coloca um rótulo no eixo das ordenadas coloca uma grelha no background do gráfico formata a gama de valores nos eixos do gráfico 20 10
Propriedades dos gráficos» x = 11;» y = 48;» plot(x,y,'r*')»» axis([9 12 35 55])» xlabel('time')» ylabel('temperature ) 21 Representação de múltiplos gráficos» 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 ) 22 11
Gráficos de barras, grelha e legenda» 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 ) Fígura 1 Fígura 2 23 Gráficos a partir de dados em ficheiro» load timetemp.dat» time = timetemp(1,:);» temp = timetemp(2,:);» plot(time,temp,'k+')» xlabel('time')» ylabel('temperature')» title('temperatures one afternoon')» 24 12
Formatação avançada de gráficos >> x = -pi:pi/10:pi; >> y = tan(sin(x)) - sin(tan(x)); >> plot(x,y,'--rs','linewidth',2,... 'MarkerEdgeColor','k',... 'MarkerFaceColor','g',... 'MarkerSize',10) 25 Trabalhar com o Plot Edit Mode Botão para modo de edição Adicionar legenda, texto e setas 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 26 13
Trabalhar com o Ploting Tools Figure Pallete Axes subplots Lineseries Figure Plot browser Activar as Ploting Tools Property Editor Adicionar dados Property Inspector 27 Referências Capítulo 2 de Stormy Attaway (2009), Matlab: A Practical Introduction to Programming and Problem Solving, Elsevier. Manuais do MATLAB Graphics 28 14