Jistě, začnu problémem odstraňování hodnot NaN v MATLABu, což je častý problém, se kterým se programátoři při práci potýkají.
NaN (Not a Number) je hodnota, která je nedefinovaná nebo nereprezentovatelná, který se často vyskytuje, když matematická operace nedokáže vytvořit konkrétní číselnou hodnotu. V MATLABu jsou chybějící nebo nedefinovaná data reprezentována pojmem 'NaN'. I když to může být užitečné, existuje několik situací, kdy jsou hodnoty NaN problematické a je třeba je odstranit.
Řešení problému NaN v MATLABu
Manipulace a odstraňování hodnot NaN ve vektoru nebo matici MATLAB je běžný rutinní proces při analýze dat. Často jsou hodnoty NaN bezvýznamné pro zbytek dat a lze je odstranit, aniž by to ovlivnilo integritu výzkumu nebo analýzy. Zde je několik metod, které můžete použít k odstranění prvků NaN z pole.
funkce 'isnan' v MATLABu vrací logické pole, které identifikuje prvky NaN v původním poli. „isnan“ znamená „není číslo“ a funkce vrátí 1 (pravda) pro každý prvek NaN v původním poli a 0 (nepravda) pro jakýkoli jiný prvek.
A = [1 2 NaN; NaN 5 6; 7 8 NaN]; TF = isnan(A);
Vysvětlení kódu krok za krokem
V prvním řádku jsme definovali pole 3×3 'A' obsahující hodnoty NaN. V dalším řádku použijeme funkci isnan k identifikaci hodnot NaN v 'A'. Funkce isnan prochází 'A' a vrací odpovídající hodnotu (1 nebo 0) pro NaN (1) a pro NOT NaN (0). Výstupem „TF“ bude pole 3×3 zobrazující polohu hodnot NaN jako „True“ v „A“.
TF = 0 0 1 1 0 0 0 0 1
Nahrazení nebo odstranění hodnot NaN
K odstranění hodnot NaN z pole je jednou z běžně používaných funkcí 'najít'. Funkce find najde indexy prvků pole, které splňují určitou podmínku, a v tomto případě hledáme prvky 'není číslo'. Poté tyto indexy z pole odstraní, čímž účinně odstraní hodnoty NaN.
[i, j] = find(isnan(A)); A(i,j) = [];
Řešení se specifickými knihovnami nebo funkcemi MATLABu
Dalším způsobem je použití vestavěných funkcí. Jedním z nich je 'rmmissing', který byl představen v MATLABu R2017b. Pomocí 'rmmissing' můžete odstranit jakýkoli řádek nebo sloupec s chybějící hodnotou (NaN) v matici nebo tabulce.
A = rmmissing(A);
Tato funkce prohledá pole nebo tabulku 'A', odstraní všechny řádky obsahující hodnoty NaN a znovu přiřadí vyčištěná data zpět k 'A'.
MATLAB poskytuje pohodlí a řadu vestavěné funkce pečlivě řešit problémy s NaN. Nejlepší je seznámit se s těmito knihovnami, abyste mohli tyto problémy při analýze dat hladce zvládnout.
Poznámka: Při odstraňování NaN nebo chybějících hodnot buďte vždy opatrní, protože někdy tyto hodnoty existují z nějakého důvodu a jejich jednoduché odstranění by mohlo zkreslit vaše data nebo výsledky. Než přistoupíte k odstranění nebo nahrazení hodnot NaN, vždy důkladně pochopte svá data a kontext.