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