MATLAB - Strings
Criar uma string de caracteres é bastante simples no MATLAB. Na verdade, já o usamos muitas vezes. Por exemplo, você digita o seguinte no prompt de comando -
my_string = 'Tutorials Point'
O MATLAB executará a instrução acima e retornará o seguinte resultado -
my_string = Tutorials Point
O MATLAB considera todas as variáveis como matrizes e as strings são consideradas matrizes de caracteres. Vamos usar owhos comando para verificar a variável criada acima -
whos
O MATLAB executará a instrução acima e retornará o seguinte resultado -
Name Size Bytes Class Attributes
my_string 1x16 32 char
Curiosamente, você pode usar funções de conversão numérica como uint8 ou uint16para converter os caracteres da string em seus códigos numéricos. ochar função converte o vetor inteiro de volta em caracteres -
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string) % 8-bit ascii values
str_back_to_char= char(str_ascii)
str_16bit = uint16(my_string) % 16-bit ascii values
str_back_to_char = char(str_16bit)
Quando você executa o arquivo, ele exibe o seguinte resultado -
str_ascii =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
str_16bit =
84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116
str_back_to_char = Tutorial's Point
Matriz Retangular de Caracteres
As strings que discutimos até agora são matrizes de caracteres unidimensionais; no entanto, precisamos armazenar mais do que isso. Precisamos armazenar mais dados textuais dimensionais em nosso programa. Isso é obtido através da criação de matrizes de caracteres retangulares.
A maneira mais simples de criar uma matriz retangular de caracteres é concatenando duas ou mais matrizes de caracteres unidimensionais, vertical ou horizontalmente, conforme necessário.
Você pode combinar strings verticalmente de uma das seguintes maneiras -
Usando o operador de concatenação MATLAB []e separando cada linha com um ponto e vírgula (;). Observe que neste método cada linha deve conter o mesmo número de caracteres. Para strings com comprimentos diferentes, você deve preencher com caracteres de espaço conforme necessário.
Usando o charfunção. Se as strings forem de comprimentos diferentes, char preenche as strings mais curtas com espaços em branco à direita para que cada linha tenha o mesmo número de caracteres.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
Quando você executa o arquivo, ele exibe o seguinte resultado -
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
Você pode combinar strings horizontalmente de uma das seguintes maneiras -
Usando o operador de concatenação MATLAB, []e separar as strings de entrada com uma vírgula ou um espaço. Este método preserva todos os espaços finais nas matrizes de entrada.
Usando a função de concatenação de string, strcat. Este método remove espaços à direita nas entradas.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
Quando você executa o arquivo, ele exibe o seguinte resultado -
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Combinando Strings em uma Matriz Celular
De nossa discussão anterior, está claro que combinar strings com comprimentos diferentes pode ser uma dor, já que todas as strings na matriz têm que ter o mesmo comprimento. Usamos espaços em branco no final das strings para equalizar seu comprimento.
No entanto, uma maneira mais eficiente de combinar as strings é converter a matriz resultante em uma matriz de células.
A matriz de células do MATLAB pode conter diferentes tamanhos e tipos de dados em uma matriz. Os arrays de células fornecem uma maneira mais flexível de armazenar strings de comprimento variável.
o cellstr função converte uma matriz de caracteres em uma matriz de células de strings.
Exemplo
Crie um arquivo de script e digite o seguinte código nele -
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
Quando você executa o arquivo, ele exibe o seguinte resultado -
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
Funções de string no MATLAB
O MATLAB fornece várias funções de string criando, combinando, analisando, comparando e manipulando strings.
A tabela a seguir fornece uma breve descrição das funções de string no MATLAB -
Função | Objetivo |
---|---|
Funções para armazenar texto em matrizes de caracteres, combinar matrizes de caracteres, etc. | |
espaços em branco | Crie uma sequência de caracteres em branco |
cellstr | Crie uma matriz de células de strings a partir de uma matriz de caracteres |
Caracteres | Converter para matriz de caracteres (string) |
iscellstr | Determine se a entrada é uma matriz de células de strings |
ischar | Determine se o item é uma matriz de caracteres |
sprintf | Formatar dados em string |
strcat | Concatenar strings horizontalmente |
strjoin | Junte strings na matriz de células em uma única string |
Funções para identificar partes de strings, localizar e substituir substrings | |
ischar | Determine se o item é uma matriz de caracteres |
isletter | Elementos da matriz que são letras alfabéticas |
isspace | Elementos de matriz que são caracteres de espaço |
isstrprop | Determine se a string pertence à categoria especificada |
sscanf | Leia os dados formatados da string |
strfind | Encontre uma string dentro da outra |
strrep | Encontrar e substituir substring |
strsplit | Dividir string no delimitador especificado |
Strtok | Partes selecionadas da corda |
validatestring | Verifique a validade da string de texto |
Symvar | Determine variáveis simbólicas na expressão |
regexp | Corresponder à expressão regular (diferencia maiúsculas de minúsculas) |
regexpi | Expressão regular de correspondência (não diferencia maiúsculas de minúsculas) |
regexprep | Substitua a string usando uma expressão regular |
regexptranslate | Traduzir string em expressão regular |
Funções para comparação de strings | |
strcmp | Compare strings (diferencia maiúsculas de minúsculas) |
strcmpi | Compare strings (não diferencia maiúsculas de minúsculas) |
strncmp | Compare os primeiros n caracteres de strings (diferencia maiúsculas de minúsculas) |
strncmpi | Compare os primeiros n caracteres de strings (não diferencia maiúsculas de minúsculas) |
Funções para alterar a string para maiúsculas ou minúsculas, criando ou removendo espaços em branco | |
esvaziar | Tira os espaços em branco à direita do final da string |
strtrim | Remova o espaço em branco à esquerda e à direita da string |
mais baixo | Converter string em minúsculas |
superior | Converter string em maiúsculas |
strjust | Justificar matriz de caracteres |
Exemplos
Os exemplos a seguir ilustram algumas das funções de string mencionadas acima -
Formatando Strings
Crie um arquivo de script e digite o seguinte código nele -
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Quando você executa o arquivo, ele exibe o seguinte resultado -
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
Unindo Strings
Crie um arquivo de script e digite o seguinte código nele -
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
Quando você executa o arquivo, ele exibe o seguinte resultado -
str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange
Localizando e Substituindo Strings
Crie um arquivo de script e digite o seguinte código nele -
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
Quando você executa o arquivo, ele exibe o seguinte resultado -
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
Comparando Strings
Crie um arquivo de script e digite o seguinte código nele -
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
Quando você executa o arquivo, ele exibe o seguinte resultado -
str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal