2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 11:58 


08/03/22
29
Есть длинный список натуральных возрастающих чисел (вектор) конечной длины.

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

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

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

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 12:56 


14/01/11
3039
Мне кажется, вольфрам не лучшее средство для такого рода задач. Есть ассемблерная инструкция BTS, которая делает ровно то, что нужно.

(Оффтоп)

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

 Профиль  
                  
 
 Posted automatically
Сообщение21.07.2022, 12:57 
Заслуженный участник


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

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 13:50 


08/03/22
29
Sender в сообщении #1560681 писал(а):
Мне кажется, вольфрам не лучшее средство для такого рода задач. Есть ассемблерная инструкция BTS, которая делает ровно то, что нужно.

(Оффтоп)

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

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

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение21.07.2022, 15:55 
Заслуженный участник


25/02/11
1797
Можно так:

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 


08/03/22
29
Vince Diesel в сообщении #1560696 писал(а):
Можно так:...

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

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

 Профиль  
                  
 
 Запись в большой файли и чтение из него
Сообщение06.11.2022, 19:48 


08/03/22
29
Можно ли в Mathematica дописывать в файл на жестком диске информацию порциями каждая из которых примерно равна объему оперативной памяти используемого компьютера командой PutAppend (или иной командой) и читать в циклах из этого файла (какой командой?), находящегося на жестком диске, его любые части примерно такого же объема ( каждая читаемая часть умещается в оперативную память)?

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

 Профиль  
                  
 
 Posted automatically
Сообщение06.11.2022, 20:12 
Админ форума


02/02/19
2519
 i  Темы объединены.

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение08.11.2022, 15:49 


08/03/22
29
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 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Воскурение мануалов привело меня к выводам:
а) Mathematica не очень хорошо справляется с битами (в отличие от байтов), и операции с ними поддерживаются лишь в функциях Import и Export, а это не ваш случай, поскольку они работают лишь с файлами целиком;
б) если переформулировать вашу задачу под байты, решение можно найти.

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение09.11.2022, 10:38 


08/03/22
29
Aritaborian в сообщении #1569352 писал(а):
если переформулировать вашу задачу под байты, решение можно найти.

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

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

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

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

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение09.11.2022, 11:13 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Modest2 в сообщении #1569432 писал(а):
Решение необходимо в битах из-за возможности записать большой объем информации.
Мотивация-то ясна.
Modest2 в сообщении #1569432 писал(а):
неужели с битами не умеет работать в изложенной здесь проблеме?
Я пришёл к такому выводу. Возможно, вывод неверен, и кто-то другой подскажет вам что-то рабочее.

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение09.11.2022, 12:09 


14/01/11
3039
Modest2 в сообщении #1569345 писал(а):
Это задача, которую необходимо выполнить средствами Mathematica.

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

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение10.11.2022, 10:02 


08/03/22
29
Sender в сообщении #1569444 писал(а):
Хм, подключение внешнего кода средствами Mathematica удовлетворяет этим условиям? Если да, можно написать нужный код на C/C++ и вызывать его с помощью LibraryLink, например.

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

 Профиль  
                  
 
 Re: Wolfram Mathematica: Битовый файл
Сообщение10.11.2022, 15:32 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Modest2, создайте тему на Mathematica.SE, если ещё не. Также можно спросить в этом ВК-комьюнити, там есть шарящие специалисты.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group