2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 11:58 
Есть длинный список натуральных возрастающих чисел (вектор) конечной длины.

Как рационально (минимальные затраты времени на запись нужны) получить средствами Wolfram Mathematica список битов (битовый файл), где адресами единичных битов были бы эти натуральные числа?
Остальные порядковые адреса оставались нулями.

Начальный битовый файл со всеми нулями длиной равной большему числу вектора создан.

Можно формировать битовый файл с одновременными созданием и записью - такого у меня нет.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 12:56 
Мне кажется, вольфрам не лучшее средство для такого рода задач. Есть ассемблерная инструкция BTS, которая делает ровно то, что нужно.

(Оффтоп)

Удивительно, но MS VisualStudio не поддерживает инлайновый ассемблер x64, ну и дела.

 
 
 
 Posted automatically
Сообщение21.07.2022, 12:57 
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Околонаучный софт»
Причина переноса: тематика вопроса.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 13:50 
Sender в сообщении #1560681 писал(а):
Мне кажется, вольфрам не лучшее средство для такого рода задач. Есть ассемблерная инструкция BTS, которая делает ровно то, что нужно.

(Оффтоп)

Удивительно, но MS VisualStudio не поддерживает инлайновый ассемблер x64, ну и дела.

Благодарен за ориентацию, но очень желательна работа без выхода из вольфрама даже с не самой большой скоростью реализации по сравнению с другими средствами.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 15:55 
Можно так:

bits = {2, 3, 5, 7, 11, 13};
bitfile = Table[0, {i, 1, Last[bits]}];
bitfile[[bits]] = 1;
Export["c:\\bitfile.bin", bitfile, "Bit"];


И для проверки

Import["c:\\bitfile.bin", "Bit"]

дает {0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0} - математика дополняет до двух байтов нулями.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение22.07.2022, 11:54 
Vince Diesel в сообщении #1560696 писал(а):
Можно так:...

Замечательно!

Премного благодарен!!!

 
 
 
 Запись в большой файли и чтение из него
Сообщение06.11.2022, 19:48 
Можно ли в Mathematica дописывать в файл на жестком диске информацию порциями каждая из которых примерно равна объему оперативной памяти используемого компьютера командой PutAppend (или иной командой) и читать в циклах из этого файла (какой командой?), находящегося на жестком диске, его любые части примерно такого же объема ( каждая читаемая часть умещается в оперативную память)?

Файл на жестком диске должен занимать объем во много сотен раз больший, чем есть оперативная память.

 
 
 
 Posted automatically
Сообщение06.11.2022, 20:12 
 i  Темы объединены.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение08.11.2022, 15:49 
Vince Diesel в сообщении #1560696 писал(а):
Можно так:

bits = {2, 3, 5, 7, 11, 13};
bitfile = Table[0, {i, 1, Last[bits]}];
bitfile[[bits]] = 1;
Export["c:\\bitfile.bin", bitfile, "Bit"];


И для проверки

Import["c:\\bitfile.bin", "Bit"]

дает {0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0} - математика дополняет до двух байтов нулями.

Была хорошей подсказкой!

Но потребности изменились и теперь надо записать единичными битами на жесткий диск в один файл (если это возможно) много списков, объем каждого из которых, близок к объему оперативной памяти.

Кроме того надо считывать из этого файла любой отрезок, который по объему меньше оперативной памяти для обработки (изменения содержания) и возврата такого фрагмента в файл в измененном виде уже нулевыми битами.

Числа в списке на запись в файл являются порядковыми номерами адресов битов в файле.

Имеется такая возможность?
Это задача, которую необходимо выполнить средствами Mathematica.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение08.11.2022, 17:22 
Аватара пользователя
Воскурение мануалов привело меня к выводам:
а) Mathematica не очень хорошо справляется с битами (в отличие от байтов), и операции с ними поддерживаются лишь в функциях Import и Export, а это не ваш случай, поскольку они работают лишь с файлами целиком;
б) если переформулировать вашу задачу под байты, решение можно найти.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение09.11.2022, 10:38 
Aritaborian в сообщении #1569352 писал(а):
если переформулировать вашу задачу под байты, решение можно найти.

Решение необходимо в битах из-за возможности записать большой объем информации.

Задача решается, конечно, путем создания на жестком диске нумерованных по порядку файлов в нужном количестве и близка к завершению.

Работа же с одним расширяемым файлом от первой порции записи битовой информации до объема жесткого диска и корректировки записанной в него информации существенно упрощает программу.
Корректировка записанной информации требует возможности чтения любого фрагмента из файла, не загружая (а его и нельзя загрузить) весь файл в оперативную память.

Пакет Mathematica весьма обширные имеет возможности, неужели с битами не умеет работать в изложенной здесь проблеме?

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение09.11.2022, 11:13 
Аватара пользователя
Modest2 в сообщении #1569432 писал(а):
Решение необходимо в битах из-за возможности записать большой объем информации.
Мотивация-то ясна.
Modest2 в сообщении #1569432 писал(а):
неужели с битами не умеет работать в изложенной здесь проблеме?
Я пришёл к такому выводу. Возможно, вывод неверен, и кто-то другой подскажет вам что-то рабочее.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение09.11.2022, 12:09 
Modest2 в сообщении #1569345 писал(а):
Это задача, которую необходимо выполнить средствами Mathematica.

Хм, подключение внешнего кода средствами Mathematica удовлетворяет этим условиям? Если да, можно написать нужный код на C/C++ и вызывать его с помощью LibraryLink, например.

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение10.11.2022, 10:02 
Sender в сообщении #1569444 писал(а):
Хм, подключение внешнего кода средствами Mathematica удовлетворяет этим условиям? Если да, можно написать нужный код на C/C++ и вызывать его с помощью LibraryLink, например.

Можно на любом языке, только проблема в их незнании и недостаточном знании используемого. :-(

 
 
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение10.11.2022, 15:32 
Аватара пользователя
Modest2, создайте тему на Mathematica.SE, если ещё не. Также можно спросить в этом ВК-комьюнити, там есть шарящие специалисты.

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group