MATLAB - Stringhe

Creare una stringa di caratteri è abbastanza semplice in MATLAB. In effetti, l'abbiamo usato molte volte. Ad esempio, digiti quanto segue nel prompt dei comandi:

my_string = 'Tutorials Point'

MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:

my_string = Tutorials Point

MATLAB considera tutte le variabili come array e le stringhe sono considerate come array di caratteri. Usiamo il filewhos comando per controllare la variabile creata sopra -

whos

MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

È interessante notare che puoi utilizzare funzioni di conversione numerica come uint8 o uint16per convertire i caratteri nella stringa nei rispettivi codici numerici. Ilchar la funzione converte il vettore intero in caratteri -

Esempio

Crea un file di script e digita il seguente codice al suo interno:

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 si esegue il file, viene visualizzato il seguente risultato:

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

Matrice di caratteri rettangolare

Le stringhe che abbiamo discusso finora sono array di caratteri unidimensionali; tuttavia, dobbiamo memorizzare più di questo. Abbiamo bisogno di memorizzare più dati testuali dimensionali nel nostro programma. Ciò si ottiene creando matrici di caratteri rettangolari.

Il modo più semplice per creare un array di caratteri rettangolare è concatenare due o più array di caratteri unidimensionali, verticalmente o orizzontalmente come richiesto.

Puoi combinare le stringhe verticalmente in uno dei seguenti modi:

  • Utilizzo dell'operatore di concatenazione MATLAB []e separando ogni riga con un punto e virgola (;). Tieni presente che in questo metodo ogni riga deve contenere lo stesso numero di caratteri. Per stringhe con lunghezze diverse, è necessario riempire con caratteri spazio secondo necessità.

  • Usando il charfunzione. Se le stringhe hanno lunghezze diverse, il carattere riempie le stringhe più brevi con spazi finali in modo che ogni riga abbia lo stesso numero di caratteri.

Esempio

Crea un file di script e digita il seguente codice al suo interno:

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 si esegue il file, viene visualizzato il seguente risultato:

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center

Puoi combinare le stringhe orizzontalmente in uno dei seguenti modi:

  • Utilizzando l'operatore di concatenazione MATLAB, []e separando le stringhe di input con una virgola o uno spazio. Questo metodo conserva tutti gli spazi finali negli array di input.

  • Utilizzando la funzione di concatenazione di stringhe, strcat. Questo metodo rimuove gli spazi finali negli input.

Esempio

Crea un file di script e digita il seguente codice al suo interno:

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

Quando si esegue il file, viene visualizzato il seguente risultato:

profile = Zara Ali      , Sr. Surgeon      , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

Combinazione di stringhe in una matrice di celle

Dalla nostra discussione precedente, è chiaro che la combinazione di stringhe con lunghezze diverse potrebbe essere un problema poiché tutte le stringhe nell'array devono essere della stessa lunghezza. Abbiamo utilizzato spazi vuoti alla fine delle stringhe per equalizzarne la lunghezza.

Tuttavia, un modo più efficiente per combinare le stringhe consiste nel convertire la matrice risultante in una matrice di celle.

L'array di celle MATLAB può contenere diverse dimensioni e tipi di dati in un array. Gli array di celle forniscono un modo più flessibile per memorizzare stringhe di lunghezza variabile.

Il cellstr funzione converte una matrice di caratteri in una matrice di celle di stringhe.

Esempio

Crea un file di script e digita il seguente codice al suo interno:

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

Quando si esegue il file, viene visualizzato il seguente risultato:

{                                                                               
   [1,1] = Zara Ali                                                              
   [2,1] = Sr. Surgeon                                                           
   [3,1] = R N Tagore Cardiology Research Center                                 
}

Funzioni di stringa in MATLAB

MATLAB fornisce numerose funzioni per stringhe che creano, combinano, analizzano, confrontano e manipolano stringhe.

La tabella seguente fornisce una breve descrizione delle funzioni stringa in MATLAB -

Funzione Scopo
Funzioni per memorizzare testo in matrici di caratteri, combinare matrici di caratteri, ecc.
spazi vuoti Crea una stringa di caratteri vuoti
cellstr Crea una matrice di celle di stringhe dalla matrice di caratteri
char Converti in matrice di caratteri (stringa)
iscellstr Determina se l'input è un array di celle di stringhe
ischar Determina se l'elemento è un array di caratteri
sprintf Formatta i dati in una stringa
strcat Concatena le stringhe orizzontalmente
strjoin Unisci le stringhe nella matrice di celle in una singola stringa
Funzioni per identificare parti di stringhe, trovare e sostituire sottostringhe
ischar Determina se l'elemento è un array di caratteri
isletter Elementi della matrice che sono lettere alfabetiche
isspace Elementi di matrice che sono caratteri spaziali
isstrprop Determina se la stringa appartiene alla categoria specificata
sscanf Legge i dati formattati dalla stringa
strfind Trova una stringa all'interno di un'altra
strrep Trova e sostituisci la sottostringa
strsplit Stringa di divisione al delimitatore specificato
strtok Parti di corda selezionate
validatestring Verifica la validità della stringa di testo
symvar Determina le variabili simboliche nell'espressione
regexp Trova espressione regolare (distingue tra maiuscole e minuscole)
regexpi Trova espressione regolare (senza distinzione tra maiuscole e minuscole)
regexprep Sostituisci la stringa usando l'espressione regolare
regexptranslate Traduci la stringa in un'espressione regolare
Funzioni per il confronto delle stringhe
strcmp Confronta stringhe (distingue tra maiuscole e minuscole)
strcmpi Confronta stringhe (senza distinzione tra maiuscole e minuscole)
strncmp Confronta i primi n caratteri di stringhe (distingue tra maiuscole e minuscole)
strncmpi Confronta i primi n caratteri di stringhe (senza distinzione tra maiuscole e minuscole)
Funzioni per cambiare la stringa in maiuscolo o minuscolo, creando o rimuovendo spazi bianchi
deblank Rimuovi gli spazi finali dalla fine della stringa
strtrim Rimuovi lo spazio bianco iniziale e finale dalla stringa
inferiore Converti la stringa in minuscolo
superiore Converte la stringa in maiuscolo
strjust Giustificare la matrice di caratteri

Esempi

I seguenti esempi illustrano alcune delle funzioni di stringa sopra menzionate:

Formattazione delle stringhe

Crea un file di script e digita il seguente codice al suo interno:

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

Quando si esegue il file, viene visualizzato il seguente risultato:

ans =  3141.592654 
   3141.59 
   +3141.59 
      3141.59 
   000003141.59

Unire le stringhe

Crea un file di script e digita il seguente codice al suo interno:

%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 si esegue il file, viene visualizzato il seguente risultato:

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

Ricerca e sostituzione di stringhe

Crea un file di script e digita il seguente codice al suo interno:

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 si esegue il file, viene visualizzato il seguente risultato:

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
}

Confronto di stringhe

Crea un file di script e digita il seguente codice al suo interno:

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 si esegue il file, viene visualizzato il seguente risultato:

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal