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
"To, co druzí dělají, může být podnětem našich pocitů, nikoli však jejich příčinou."