Práce s řetězci je v Matlabu velmi jednoduchá a téměř intuitivní. Však je také tato problematika popisována hned v úvodních kapitolách většiny učebnic. Zkráceně, řetězec vytvoříme většinou tak, že požadovaný text “obalíme” apostrofy:
'textový řetězec'
ans =
textový řetězec
Samozřejmě, že s tako vytvořeným řetězcem můžeme dále libovolně nakládat a zpracovávat ho mnoha funkcemi Matlabu pro práci s řetězci. Spojování řetězců se provádí pomocí funkce strcat, nebo stejně jako spojování matic, pomocí hranatých závorek:
['textový', 'řetězec']
Na jednu záludnost však narazit můžeme a to tehdy pokud do řetězce potřebujeme vložit apostrof. V českém textu se apostrof vyskytuje velmi zřídka, nicméně v anglickém textu je tomu naopak viz: “I’m …”. Pokud tedy potřebujete vložit apostrof do řetězce musíte apostrof napsat dvakrát za sebou:
'I''m'
ans =
I'm
Druhým typickým místem, kde se setkáte s potřebou uvádět apostrof do řetězce je příprava kódu pro funkci eval. Například pokud chceme transponovat matici, jejíž jméno je uloženo v proměnné jmenoMatice, bude volání funkce eval vypadat následovně:
A = [1 2;3 4]
jmenoMatice = 'A';
eval([jmenoMatice ''''])
A =
1 2
3 4
ans =
1 3
2 4
Uvedení čtyř apostrofů je zde zcela v pořádku a ve finále opravdu vygeneruje apostrof jeden. První apostrof uvozuje začátek řetězce, následně jsou uvedeny dva apostrofy jenž se sloučí v apostrof jeden a poslední ukončuje řetězec. Funkce eval tedy zpracovává řetězec “A'”.
K sepsání tohoto příspěvku mě inspirovala diskuze GUI : evalin with a condition na comp.soft-sys.matlab diskuzní skupině.
Žádné komentáře:
Okomentovat