Beruflich Dokumente
Kultur Dokumente
MATLAB
Conteúdo da Aula
• Definição de Cadeias de Caracteres
• Manipulações de Strings
• Entrada de Strings pelo Usuário
• Conversão de Dados
• Impressão de Resultados
• Formato de Gravação de Dados
• Algumas Funções de Texto
Strings de Caracteres
• Em algumas situações, encontramos a necessidade de
manipulação de texto ao invés do processamento de números.
• Para esta manipulação utilizamos as strings ou cadeias de
caracteres.
• Para definir uma string basta inserir um texto entre aspas simples
(‘’).
• As strings podem ser consideradas vetores numéricos com certos
atributos especiais e seu tratamento pode ser realizado através das
manipulações vetoriais já conhecidas.
• O sistema de indexação, as operações matriciais, a concatenação
vertical e horizontal se dão da mesma forma.
Strings de Caracteres
Exemplo:
>> t='Isso é uma string de caracteres!';
>> b=double(t)
>> size(t)
ans = >> a=[84 101 120 116 111];
1 32
>> char(a)
>> whos ans =
Name Size Bytes Class Texto
Attributes
ans 1x2 16 double
t 1x32 64 char
Strings de Caracteres
Exemplo:
>> r=t(22:31) • A concatenação de strings é
obtida diretamente da
>> s=t(31:-1:22)
concatenação de vetores. Já a
>> txt='Resposta'; função disp exibe a string de
caracteres sem o nome da
>> txt(4:end) variável.
>> u=t(22:31)'
• Para interação com o usuário,
>> v='Caixa d''água‘ emprega-se a função input.
>> w=[u v]
>> disp(u)
Universidade Federal
Exemplo: 20 colunas
>> M=['No caso de matrizes,' comprimento
'todas as linhas ' >> F=['Neste caso,'
'devem ter o mesmo ' 'vai dar erro'
'comprimento ' 'certamente'] % segunda linha maior
] ??? Error using ==> vertcat
M= CAT arguments dimensions are not
No caso de matrizes, consistent.
todas as linhas
devem ter o mesmo
Conversão de Texto
Conversão de Texto
char Números ASCII para string
double String para números ASCII
int2str Inteiro para string
mat2str Matriz numérica para string
num2str Número para string
str2num String para número
sprintf Número para string, com controle de formato
fprintf Escreve texto formatado em um arquivo ou na tela
sscanf String para número, com controle de formato
Conversão de Texto
• Em muitas situações, é desejável incorporar um
resultado numérico a uma string.
Exemplo:
>> raio=2.5; area=pi*raio^2;
>> texto=['Um círculo de raio ' num2str(raio) ' possui uma área de '
num2str(area) '.'];
>> disp(texto)
>> size(texto) Aqui a função num2str converte números em
strings para depois, fazer a concatenação
ans =
vetorial. Essas funções, num2str e int2str,
1 49 recorrem para uma sintaxe semelhante à
linguagem C quando substituídas por sprintf ou
fprintf.
Conversão de Texto
Exemplo:
function [x1,x2]=bhaskara(a,b,c) texto=['Os valores das raízes são: '
%BHASKARA Calcula as raízes de uma num2str(x1) ' e ' num2str(x2) '.'];
equação de segundo grau disp(texto)
% Dados os coeficientes a,b e c da
equação de segundo grau: a*x^2+b*x+c x=linspace(-20,20);
% calcula as raízes e plota o gráfico da y=a*x.^2+b*x+c;
parábola de x=[-20,20]. plot(x,y)
xlabel('x')
delta=b^2-4*a*c; texto=['(' num2str(a) ')*x^2+('
x1=(-b+sqrt(delta))/(2*a); num2str(b) ')*x+(' num2str(c) ')'];
x2=(-b-sqrt(delta))/(2*a); ylabel(texto)
title('Equação do Segundo Grau')
fprintf('Os valores das raízes
são:\n%f\n%f\n',x1,x2); end
Conversão de Texto
• sprintf(fmt,dado1,...,dadon): grava dados formatados em uma
cadeia de caracteres.
Exemplo:
a = '13579';
b = '35197';
c = '23579';
% Verificação da permutação
if size(a,2)==size(b,2)
[n0a,n1a,n2a,n3a,n4a,n5a,n6a,n7a,n8a,n9a]=conta_digitos(a);
[n0b,n1b,n2b,n3b,n4b,n5b,n6b,n7b,n8b,n9b]=conta_digitos(b);
if
[n0a,n1a,n2a,n3a,n4a,n5a,n6a,n7a,n8a,n9a]==[n0b,n1b,n2b,n3b,n4b,n5b,n6b,n7b,n8b,n9
b]
fprintf('O inteiro a é permutação do inteiro b\n')
else
fprintf('O inteiro a não é permutação do inteiro b\n')
end
else
fprintf('O inteiro a não é permutação de b\n')
end
Funções de Texto
Funções de Texto
findstr(s1,s2) Procura uma string dentro da outra
ischar(s) Verdadeira se o argumento for uma string
isletter(s) Verdadeira se houver alguma letra do alfabeto
isspace(s) Verdadeira se houver algum espaço em branco
strcat(s1,s2,...) Concatena horizontalmente strings
strvcat(s1,s2,...) Concatena strings verticalmente
strcmp(s1,s2) Verdadeira se as strings forem idênticas
strncmp(s1,s2,n) Verdadeira se os primeiros n caracteres forem idênticos
strrep(s1,s2) Substitui uma string por outra
strtok(s) Mostra os caracteres até determinado símbolo de uma string
upper(s) Converte para maiúsculas
lower(s) Converte para minúsculas
Funções de Texto
• findstr(s1,s2): utilizada geralmente para verificações
gramaticais elementares. Acha uma cadeia dentro de
outra, retornando o índice.
Exemplo:
>> texto='A função findstr encontra uma string em outra';
>> findstr('função',texto) A função find pode ser utilizada quando se
ans = procura apenas um caractere:
3 >> find(texto=='r')
ans =
>> findstr(' ',texto) 16 24 33 44
ans = E quando nada é encontrado?
2 9 17 26 30 37 40 Há diferença entre letras maiúsculas e
minúsculas?
Findstr não funciona com matrizes de strings.
Funções de Texto
• ischar: verifica se é cadeia de caracteres.
• isletter: verifica se é letra
• isspace: verifica se é espaço em branco ‘ ’.
Exemplo:
>> str1='AB 1' >> isletter(str1)
str1 = ans =
AB 1 1 1 0 0
>> ischar(str1) >> isspace(str1)
ans = ans =
1 0 0 1 0
Funções de Texto
• strcat( , ): concatenação horizontal.
• strvcat( , ): concatenação vertical.
Exemplo:
>> a=char('vibracoes','termodinamica'); >> strvcat(str1,str2)
>> b=char(' 18/04',' 10/05'); ans =
>> strcat(a,b) Janeiro
ans = Fevereiro
vibracoes 18/04
termodinamica 10/05
>> str1='Janeiro';
>> str2='Fevereiro';
Funções de Texto
• strcmp( , ): compara cadeias.
• strncmp( , ,n): compara os n primeiros caracteres das
cadeias.
• strcmpi( , ); strncmpi( , ,n): ignora diferença entre letras
maiúsculas e minúsculas.
Exemplo:
>> str1='Matriz'; 0
>> str2='matrizes'; >> strcmpi(str1,str2)
>> strcmp(str1,str2) ans =
ans = 0
0 >> strncmpi(str1,str2,5)
>> strncmp(str1,str2,5) ans =
ans = 1
Funções de Texto
• strrep( ,‘’,‘’): realiza substituições simples de strings em
uma variável tipo char.
Exemplo:
>> texto='A função findstr encontra uma string em outra';
>> strrep(texto,'f','F')
ans =
A Função Findstr encontra uma string em outra
>> strrep(texto,'string','STRING')
ans =
A função findstr encontra uma STRING em outra
Funções de Texto
• strtok( ,‘’): retorna a parte da cadeia que precede a
primeira ocorrência de um caractere delimitador.
• upper(): converte letras em maiúsculo.
• lower(): converte letras em minúsculo.
Exemplo:
>> nome='Sei programar no >> upper(str)
MATLAB & C++'; ans =
>> strtok(nome,'&') ABCDEF
ans = >> lower(str)
Sei programar no MATLAB ans =
>> str='AbCdEf'; abcdef
Exercício:
Escreva uma função (ispalin.m) que retorna 1, se a string for um
palíndromo, e 0, caso contrário. Um palíndromo é uma sentença
que pode ser lida tanto da esquerda para direita, quanto da
direita para a esquerda. Assegure que não haja pontuação e que
as letras são todas minúsculas.
Exemplo:
ispalin('Arara')
ans =
1
Referências Bibliográficas
• Hanselman D., Littlefield B.. MATLAB 6: Curso Completo.
Prentice Hall, São Paulo 2003.
• Matsumoto E. Y.. MATLAB® 6.5: Fundamentos de
Programação. Editora Érica Ltda.