Chcę wykreślić bajty z obrazu dysku, aby zrozumieć wzorzec w nich. Jest to głównie zadanie akademickie, ponieważ jestem prawie pewien, że ten wzorzec został stworzony przez program do testowania dysków, ale i tak chciałbym go przebudować.
Wiem już, że wzór jest wyrównany, z częstotliwością 256 znaków.
Mogę wyobrazić sobie dwa sposoby wizualizacji tej informacji: albo płaszczyznę 16 x 16 widzianą w czasie (3 wymiary), gdzie kolor każdego piksela to kod ASCII znaku, lub linię 256 pikseli dla każdego okresu (2 wymiary).
To jest migawka wzoru (możesz zobaczyć więcej niż jeden), widziane przez xxd
(32x16):
Tak czy inaczej, staram się znaleźć sposób wizualizacji tych informacji. Prawdopodobnie nie jest to trudne do analizy sygnałów, ale nie mogę znaleźć sposobu na użycie oprogramowania typu open source.
Chciałbym uniknąć Matlaba lub Mathematiki i wolę odpowiedź w języku R, ponieważ uczyłem się jej niedawno, ale mimo to każdy język jest mile widziany.
Aktualizacja, 2014-07-25: biorąc pod uwagę odpowiedź Emre poniżej, tak wygląda wzór, biorąc pod uwagę pierwsze 30 MB wzoru, wyrównane do 512 zamiast 256 (to wyrównanie wygląda lepiej):
Wszelkie dalsze pomysły są mile widziane!
źródło
Odpowiedzi:
Użyłbym analizy wizualnej. Ponieważ wiesz, że powtarzane są co 256 bajtów, utwórz obraz o szerokości 256 pikseli o dowolnej głębokości i zakoduj dane przy użyciu jasności. W pytaniu (i) wyglądałoby to tak:
Tak wygląda plik PDF:
256-bajtowy wzór okresowy objawiłby się jako linie pionowe. Z wyjątkiem nagłówka i ogona wygląda dość głośno.
źródło
python-scitools
iipython
. Komunikat o błędzie toValueError: invalid literal for int() with base 10: '#'
. Zobaczę, czy i tak mogę to zrobić ...ipython
i zmieniamap(int, line)
sięmap(ord, line)
, i aktualizowane na pytanie z nowym obrazem.Nie wiem prawie nic na temat analizy sygnałów, ale wizualizację dwuwymiarową można łatwo wykonać przy użyciu R. Szczególnie będziesz potrzebować
reshape2
iggplot2
pakietów. Zakładając, że twoje dane są szerokie (np. Rozmiar [n X 256]), najpierw musisz przekształcić je na długi format za pomocąmelt()
funkcji zreshape2
pakietu. Następnie użyjgeom_tile
geometrii zggplot2
. Oto fajny przepis z istotą .źródło
Chciałbym spojrzeć na
raster
opakowaniu do tego, co można przeczytać w surowych danych binarnych i przedstawić go jako siatek NXM. Może nawet wyodrębniać podzbiory dużych siatek binarnych bez konieczności odczytywania całego pliku (sam obiekt rastrowy R jest jedynie proxy danych, a nie samych danych).źródło