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