нормализованный код сжатия С код - PullRequest
1 голос
/ 24 мая 2011

Кто-нибудь знает, есть ли уже код на C, который вычисляет NCD (нормализованное расстояние сжатия) для двух файлов, или мне нужно написать код самостоятельно? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 24 мая 2011

Я не думаю, что существуют какие-либо библиотеки C для вычисления семейства функций NCD или чего-либо подобного. Лучше всего сделать это в MATLAB, а затем преобразовать m files в эквивалентный C код как mex file. Кроме того, вы также можете написать свой собственный код.

Если ваш код может работать в системах Linux, вы можете использовать утилиту tar с опцией -z для gzip и -j для алгоритма сжатия bzip. Чтобы создать архив bzip, используйте следующую опцию: tar -cjf foo.bz2 temp/ создает bzip архив каталога temp/ и присваивает имя выводу foo.bz2. Чтобы создать gzip заархивированный файл, используйте следующие параметры: tar -cjf foo.gzip temp/

Чтобы вызвать этот код из c программы, вы можете использовать команду system(). Эта команда принимает любую утилиту, которую вы хотите вызвать (с параметрами), в качестве входных данных и возвращает int, указывающий на успех или неудачу. Вы можете вызвать это так:

int i = system("tar -cjf foo.bz2 temp/") 
0 голосов
/ 25 мая 2011

В Ubuntu Hardy Heron есть инструмент под названием ncd.Это может быть то, что вы ищете.Дополнительная информация: http://manpages.ubuntu.com/manpages/hardy/man1/ncd.1.html

РЕДАКТИРОВАТЬ: ncd программа поставляется из пакета libcomplearn, и вы можете скачать этот пакет (исходники находятся в папке с именем src) здесь: https://launchpad.net/ubuntu/hardy/+source/libcomplearn/1.1.1-1

Обратите внимание, что я не ознакомился с условиями лицензирования и другими ограничениями этого инструмента.Возможно, вы захотите взглянуть на них перед использованием инструмента или источников.

...