
Funkce find() a exist()
Další užitečnou funkcí je funkce find(), která vrací indexy nenulových prvků vstupního vektoru nebo matice.
Možnosti použití funkce find():
I = find(x) | do proměnné I umístí indexy nenulových prvků vektoru x |
I = find(A) | do proměnné I umístí indexy nenulových prvků matice A, ty jsou brány po sloupcích |
[I,J] = find(A) | umístí do I řádkové indexy a do "J" sloupcové indexy nenulových prvků matice "A" |
[I,J,K] = find(A) | do proměnné K navíc umístí příslušné nenulové prvky |
[I,J,K] = find(x) | do proměnné I umístí řádkové indexy, do proměnné J sloupcové indexy nenulových prvků vektoru x a do proměnné K jeho nenulové hodnoty |
Častým použitím funkce find() jsou případy, kdy vektor x nebo matice A jsou logické vektory/matice, tzn. jsou výstupem porovnávacích operací.
|
Existenci a typy objektů MATLABu lze testovat pomocí funkce exist().Výstupem příkazu ex = exist('A') jsou následující možnosti proměnné ex:
0 | objekt s názvem A neexistuje | |
1 | A je proměnná | |
2 | A je m-soubor v běžném adresáři nebo v MATLABPATH | |
3 | A je MEX-soubor v běžném adresáři nebo v MATLABPATH | |
4 | A je kompilovaná funkce v systému SIMULINK1 | |
5 | A je interní (předkompilovaná) funkce MATLABu | |
6 | A je předkompilovaná m-funkce s názvem A.p. Soubor A.p lze vytvořit pomocí příkazu pcode (více viz help pcode) | |
7 | A je adresář |
Při kolizi názvů (existují-li různé objekty se stejným názvem) platí následující priorita:
1. | proměnná |
2. | interní funkce |
3. | funkce MEX (napřed pracovní adresář, pak MATLABPATH od začátku) |
4. | příkaz jako p-soubor (napřed pracovní adresář, pak MATLABPATH od začátku) |
5. | příkaz jako m-soubor (napřed pracovní adresář, pak MATLABPATH od začátku) |
Funkci exist() je možné také použít se dvěma parametry:
Výstupní hodnota je tak 1, pokud A jako daný typ existuje, v opačném případě je výstupní hodnotou 0.
1SIMULINK je nadstavba MATLABu pro simulaci a modelování dynamických systémů.