Я хочу построить байты из образа диска, чтобы понять в них закономерность. Это в основном академическая задача, так как я почти уверен, что этот шаблон был создан программой тестирования диска, но я все равно хотел бы его перепроектировать.
Я уже знаю, что шаблон выровнен с периодичностью 256 символов.
Я могу представить два способа визуализации этой информации: либо плоскость 16x16, просматриваемая во времени (3 измерения), где цвет каждого пикселя является кодом ASCII для символа, либо строка 256 пикселей для каждого периода (2 измерения).
Это снимок шаблона (вы можете увидеть более одного), видимый через xxd
(32x16):
В любом случае, я пытаюсь найти способ визуализации этой информации. Это, вероятно, не сложно для кого-то в анализе сигналов, но я не могу найти способ использовать программное обеспечение с открытым исходным кодом.
Я хотел бы избегать Matlab или Mathematica, и я предпочел бы ответ на R, так как я изучал его недавно, но, тем не менее, любой язык приветствуется.
Обновление, 2014-07-25: с учетом приведенного ниже ответа Эмре, вот как выглядит шаблон, учитывая первые 30 МБ шаблона, выровненные по 512 вместо 256 (это выравнивание выглядит лучше):
Любые дальнейшие идеи приветствуются!
источник
Ответы:
Я бы использовал визуальный анализ. Поскольку вы знаете, что каждые 256 байт повторяются, создайте изображение шириной 256 пикселей и глубиной, и закодируйте данные с использованием яркости. В (я) Python это будет выглядеть так:
Вот как выглядит PDF:
256-байтовый периодический шаблон проявился бы как вертикальные линии. За исключением заголовка и хвоста это выглядит довольно шумно.
источник
python-scitools
иipython
. Сообщение об ошибкеValueError: invalid literal for int() with base 10: '#'
. Я посмотрю, смогу ли я заставить это работать в любом случае ...ipython
, и измененияmap(int, line)
кmap(ord, line)
, и уточнен вопрос с новой картины.Я почти ничего не знаю об анализе сигналов, но 2-мерная визуализация может быть легко выполнена с использованием R. В частности, вам понадобятся
reshape2
иggplot2
пакеты. Предполагая, что ваши данные широки (например, размер [n X 256]), сначала вам нужно преобразовать их в длинный формат, используяmelt()
функцию изreshape2
пакета. Тогда используйтеgeom_tile
геометрию изggplot2
. Вот хороший рецепт с сущностью .источник
Я бы посмотрел на
raster
пакет для этого, который может читать необработанные двоичные данные и представлять его в виде сетки NxM. Он может даже извлекать подмножества больших двоичных сеток, не считывая весь файл (сам растр R является просто прокси для данных, а не для самих данных).источник