MATLAB - Snaren
Het maken van een tekenreeks is vrij eenvoudig in MATLAB. Sterker nog, we hebben het vaak gebruikt. U typt bijvoorbeeld het volgende in de opdrachtprompt −
Live demomy_string = 'Tutorials Point'
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
my_string = Tutorials Point
MATLAB beschouwt alle variabelen als arrays en strings worden beschouwd als tekenarrays. Laten we de wie . gebruiken commando om de hierboven aangemaakte variabele te controleren −
whos
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
Name Size Bytes Class Attributes my_string 1x16 32 char
Interessant is dat u numerieke conversiefuncties zoals uint8 . kunt gebruiken of uint16 om de tekens in de tekenreeks om te zetten in hun numerieke codes. De char functie converteert de gehele vector terug naar karakters −
Voorbeeld
Maak een scriptbestand en typ de volgende code erin −
Live demomy_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)
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
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
Rechthoekige tekenreeks
De strings die we tot nu toe hebben besproken, zijn eendimensionale tekenreeksen; we moeten echter meer opslaan dan dat. We moeten meer dimensionale tekstuele gegevens in ons programma opslaan. Dit wordt bereikt door rechthoekige tekenreeksen te maken.
De eenvoudigste manier om een rechthoekige tekenreeks te maken, is door twee of meer eendimensionale tekenreeksen samen te voegen, verticaal of horizontaal zoals vereist.
U kunt strings verticaal combineren op een van de volgende manieren −
-
De MATLAB-aaneenschakelingsoperator gebruiken [] en het scheiden van elke rij met een puntkomma (;). Houd er rekening mee dat bij deze methode elke rij hetzelfde aantal tekens moet bevatten. Voor strings met verschillende lengtes moet u zo nodig met spatietekens opvullen.
-
De char . gebruiken functie. Als de tekenreeksen verschillende lengtes hebben, vult char de kortere tekenreeksen op met spaties aan het einde, zodat elke rij hetzelfde aantal tekens heeft.
Voorbeeld
Maak een scriptbestand en typ de volgende code erin −
Live demodoc_profile = ['Zara Ali '; ... 'Sr. Surgeon '; ... 'R N Tagore Cardiology Research Center'] doc_profile = char('Zara Ali', 'Sr. Surgeon', ... 'RN Tagore Cardiology Research Center')
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
doc_profile = Zara Ali Sr. Surgeon R N Tagore Cardiology Research Center doc_profile = Zara Ali Sr. Surgeon RN Tagore Cardiology Research Center
U kunt strings horizontaal combineren op een van de volgende manieren −
-
Met behulp van de MATLAB-aaneenschakelingsoperator, [] en het scheiden van de invoerreeksen met een komma of een spatie. Deze methode behoudt eventuele volgspaties in de invoerarrays.
-
Met behulp van de tekenreeksaaneenschakelingsfunctie, strcat . Deze methode verwijdert achterliggende spaties in de invoer.
Voorbeeld
Maak een scriptbestand en typ de volgende code erin −
Live demoname = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = [name ', ' position ', ' worksAt] profile = strcat(name, ', ', position, ', ', worksAt)
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
Snaren combineren in een celarray
Uit onze vorige discussie is het duidelijk dat het combineren van strings met verschillende lengtes lastig kan zijn, omdat alle strings in de array dezelfde lengte moeten hebben. We hebben spaties aan het einde van strings gebruikt om de lengte gelijk te maken.
Een efficiëntere manier om de strings te combineren is echter om de resulterende array om te zetten in een celarray.
MATLAB-celarray kan verschillende groottes en soorten gegevens in een array bevatten. Celarrays bieden een flexibelere manier om strings van verschillende lengte op te slaan.
De cellstr functie converteert een tekenreeks naar een celreeks van tekenreeksen.
Voorbeeld
Maak een scriptbestand en typ de volgende code erin −
Live demoname = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = char(name, position, worksAt); profile = cellstr(profile); disp(profile)
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
{ [1,1] = Zara Ali [2,1] = Sr. Surgeon [3,1] = R N Tagore Cardiology Research Center }
Snaarfuncties in MATLAB
MATLAB biedt tal van tekenreeksfuncties voor het maken, combineren, ontleden, vergelijken en manipuleren van tekenreeksen.
De volgende tabel geeft een korte beschrijving van de tekenreeksfuncties in MATLAB −
Functie | Doel |
---|---|
Functies voor het opslaan van tekst in tekenreeksen, het combineren van tekenreeksen, enz. | |
blanks | Een reeks lege tekens maken |
cellstr | Creëer een celreeks van tekenreeksen uit een tekenreeks |
char | Converteren naar tekenreeks (tekenreeks) |
iscellstr | Bepaal of de invoer een celreeks van tekenreeksen is |
ischar | Bepaal of het item een tekenreeks is |
sprintf | Gegevens opmaken in string |
strcat | Samenvoegen strings horizontaal |
strjoin | Voeg strings in celarray samen tot een enkele string |
Functies voor het identificeren van delen van strings, zoeken en vervangen van substrings | |
ischar | Bepaal of het item een tekenreeks is |
isletter | Array-elementen die alfabetische letters zijn |
isspace | Array-elementen die spatietekens zijn |
isstrprop | Bepaal of de string van de gespecificeerde categorie is |
sscanf | Geformatteerde gegevens uit string lezen |
strfind | Zoek een string in een andere |
strrep | Substring zoeken en vervangen |
strsplit | Tekenreeks splitsen bij gespecificeerd scheidingsteken |
strtok | Geselecteerde delen van string |
validatestring | Geldigheid van tekststring controleren |
symvar | Bepaal symbolische variabelen in uitdrukking |
regexp | Overeenkomen met reguliere expressie (hoofdlettergevoelig) |
regexpi | Overeenkomen met reguliere expressie (hoofdletterongevoelig) |
regexprep | Tekenreeks vervangen door reguliere expressie |
regexptranslate | Tekenreeks vertalen naar reguliere expressie |
Functies voor het vergelijken van strings | |
strcmp | Tekenreeksen vergelijken (hoofdlettergevoelig) |
strcmpi | Tekenreeksen vergelijken (hoofdlettergevoelig) |
strncmp | Vergelijk eerste n karakters van strings (hoofdlettergevoelig) |
strncmpi | Vergelijk de eerste n karakters van strings (hoofdletterongevoelig) |
Functies voor het wijzigen van tekenreeksen in hoofdletters of kleine letters, voor het maken of verwijderen van witruimte | |
blank | Sluit spaties aan het einde van de tekenreeks |
strtrim | Verwijder voorloop- en volgspaties uit string |
lager | Tekenreeks converteren naar kleine letters |
bovenste | Tekenreeks omzetten in hoofdletters |
strjust | Tekenreeks uitvullen |
Voorbeelden
De volgende voorbeelden illustreren enkele van de bovengenoemde tekenreeksfuncties −
Snaren opmaken
Maak een scriptbestand en typ de volgende code erin −
Live demoA = pi*1000*ones(1,5); sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
ans = 3141.592654 3141.59 +3141.59 3141.59 000003141.59
Snaren samenvoegen
Maak een scriptbestand en typ de volgende code erin −
Live demo%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, ",")
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
str1 = red-blue-green-yellow-orange str2 = red,blue,green,yellow,orange
Snaren zoeken en vervangen
Maak een scriptbestand en typ de volgende code erin −
Live demostudents = {'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)
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
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 }
Snaren vergelijken
Maak een scriptbestand en typ de volgende code erin −
Live demostr1 = '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
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
str1 = This is test str2 = This is text ans = This is test and This is text are not equal
MATLAB