Jak wiadomo, przy wielu okazjach istnieje potrzeba oznaczania niektórych elementów macierzy. Na przykład, gdy mamy ważoną macierz sąsiedztwa, a nasz wykres nie jest w pełni połączony, musimy oznaczyć niektóre elementy, aby pokazać, że nie ma krawędzi między tymi węzłami. Pytanie brzmi, jak to zrobić? Czy lepiej jest umieścić NaN lub Inf na tych elementach w macierzy? lub coś innego (np. -1)?Jaki jest najlepszy sposób oznaczania niektórych elementów w programie MATLAB? używając NaN lub Inf? albo coś innego?
5
A
Odpowiedz
10
To całkowicie zależy od przypadku. W tym przykładzie dobrym rozwiązaniem może być użycie zer zer, ponieważ krawędzie są ważone, a dla wielu celów krawędź o wartości 0 równa jest zeru. To prawda, jeśli robisz takie rzeczy jak algorytmy przepływu/cięcia.
Ogólnie wybierając między NaN i Inf, wybrałbym NaN. Inf ma pewne właściwości, które nie mogą chcieć jako „nieważny” marker:
Inf*(-1) = -Inf
Inf+(-Inf) = NaN
Inf > 10 = True
etc...
Czysty rozwiązaniem może być zorganizowanie inny matrycy logicznych, że prawda ma gdzie połączenie jest poprawne i false w przeciwnym wypadku. To marnuje trochę pamięci, ale jeśli twoja macierz nie jest ogromna, myślę, że czytelność kodu, którą ci da, jest tego warta.
Powiązane problemy
- 1. W jaki sposób są wdrażane systemy Inf i NaN?
- 2. Jaki jest najlepszy sposób renderowania ikonek w programie DirectX 11?
- 3. Co to jest inf i nan?
- 4. Usuń NA/NaN/Inf w matrycy
- 5. CMake IF (coś LUB coś innego)
- 6. Jaki jest najlepszy sposób na zrozumienie wewnętrznych elementów TeX/LaTeX?
- 7. Jedna funkcja do wykrywania NaN, NA, Inf, -Inf itd.?
- 8. Jaki jest najlepszy sposób profilowania wykonywania javascript?
- 9. Jaki jest najlepszy sposób rejestrowania aktywności użytkowników?
- 10. W R, w jaki sposób mogę odwzorować wartości numeryczne na czynniki, w tym Inf i NaN?
- 11. Jaki jest najlepszy sposób na zintegrowanie dostawcy Bouncy Castle w programie Java?
- 12. Jaki jest najszybszy sposób na załadowanie danych w Matlab
- 13. Jaki jest najlepszy sposób debugowania programu usługi systemu Windows w programie Visual Studio 2008
- 14. Meteor: Ukryj lub usuń element? Jaki jest najlepszy sposób
- 15. Który jest najlepszy sposób definiowania stałych w systemie Android, albo klasy statycznej, interfejsu lub zasobu xml?
- 16. Czy "minimalna do maksymalnej" jednolita dystrybucja rzeczywista wytworzy Inf, -Inf lub NaN?
- 17. Jaki jest najlepszy sposób na porównywanie programów w systemie Windows?
- 18. Jaki jest najlepszy sposób na wdrożenie komputera stanu interfejsu użytkownika?
- 19. Jaki jest najlepszy sposób na obsługę zdarzeń w Ember.js?
- 20. Jaki jest najlepszy sposób wykrywania pobierania obrazu - onload lub addEventListener()?
- 21. Jaki jest najlepszy sposób tworzenia wyszukiwania whois?
- 22. Jaki jest najlepszy projektant wizualny Camel w programie Apache Camel?
- 23. Jaki jest najlepszy sposób zamknięcia gałęzi Mercurial?
- 24. sortowanie list według niektórych elementów
- 25. Jaki jest najlepszy sposób na zastąpienie pliku remote.origin.url w Git?
- 26. Jaki jest najlepszy sposób na zsumowanie wyniku funkcji składowej dla wszystkich elementów w kontenerze?
- 27. Jaki jest cel elementów sterowania użytkownika w programie Visual C#?
- 28. Jaki jest najlepszy sposób uruchamiania poleceń powłoki z interfejsu sieciowego?
- 29. Jaki jest najlepszy sposób symulacji java.lang.Thread?
- 30. Jaki jest najlepszy sposób wyświetlania postępów w wywołaniu Ajax?
NaN również pewne niespodzianki: NaN == NaN zwraca false! Dlatego zamiast używać funkcji isequal(), należy użyć funkcji isequalwithnans(). – Mikhail
It's isequalwithequalnans() – Jonas
To ma doskonały sens, że NaN == NaN jest fałszywe. zobacz na przykład: http://stackoverflow.com/questions/1843451/why-does-null-null-evaluate-to-false-in-sql-server. –