Pojďme se dnes podívat na práci s řetězci v programu MATLAB...
Řetězce se v Matlabu označují apostrofy - 'toto je retezec'.
strcat( string, string ) - sloučí dva řetězce či pole znaků.
str = 'kuk'; strcat(str,' je muj rezezec') %vypise: kuk je muj retezec
Při práci s řetězci v Matlabu může člověk neznalý dost tvrdě narazit. Funguje třeba
pole = ['pes' , 'dva psi'], tj. dvousloupcové pole (řetězce oddělené čárkou nebo mezerou), ale už nikoli
, tj. dvouřádkové pole (řetězce oddělené středníkem), protože řetězce mají různou délku, což vyvolá kočičí chybu.pole = ['pes' ; 'dva psi']
Možným řešením je následující kód:
% pouziti funkce strvcat % pole = strvcat( 'pes' , 'dva psi' ) % vypise: pole = pes dva psi pole (2) % vypise: dva psi % pouziti cell array % pole = { 'pes' 'dva psi' } % vypise: 'pes' 'dva psi' pole (2) % vypise: 'dva psi'
strvcat() - parametry jsou řetězce, oddělené čárkou. Písmeno "v" v názvu funkce značí, že se jedná o spojení do "vertikálního" pole. Existuje ještě funkce strcat(), který spokuje do horizonálního pole (tedy jeden dlouhý řádek).
cell array X = {'str' 'str'} - řetězce mohou být odděleny čárkou nebo mezerou, celé pole je ohraničeno složenými závorkami. Pro porovnávání s řetězci je nutné položku pole nejdřív převést na pole charu. char( X(2) ). Pozn. přetypování se nepíše jako v Céčku do závorky před proměnnou, ale proměnná se píše jako parametr přetypovávací funkce!
strcmp( string, string ) - vrátí true, pokud se řetězce rovnají.
findstr( string , string ) - vrátí pole čísel, které představují počáteční index výskytu kratšího řetězce v delším (lze kontrolovat např. funkcí isempty(), která vrátí true, pokud je pole prázdné).
Tento web jsem zakládal na střední, v roce 2008. Je zde hlavně archiv mé tvorby.
Aktuální věci publikuji kvůli úspoře času na Twitter.
Honza
"Člověk má tři cesty, jak moudře jednat. Nejprve přemýšlením, to je ta nejušlechtilejší cesta. Druhá cesta vede napodobováním, ta je cestou nejlehčí, a třetí cesta, zkušenosti, je tou nejtvrdší."