Пакет: matlab.io.hdf4.sd
Задайте нестандартную длину битов для значений набора данных
setNBitDataSet(sdsID,startBit,bitlen,ext,fillone)
setNBitDataSet(sdsID,startBit,bitlen,ext,fillone)
задает, что целочисленный набор данных, идентифицируемый sdsID
содержит данные нестандартной длины, заданные как startBit
и bitlen
.
Может быть задана любая длина от 1 до 32 бит. После setNBitDataset
был вызван для массива набора данных, любая операция чтения или записи будет включать преобразование между новой длиной данных массива набора данных и длиной данных буфера чтения или записи.
Длины битов всех типов данных подсчитываются справа от поля бита, начиная с 0. В небольшой области, содержащей значения 01111011, биты 2 и 7 установлены в 0, и все другие биты установлены в 1. Наименьший значащий бит - бит 0.
The startBit
параметр задает самую левую позицию записываемого битового поля переменной длины. Для примера в бит поле, описанном в предыдущем пункте а startBit
набор параметров на 4, будет соответствовать четвертому битовому значению 1 справа.
Значение параметра bitlen
задает количество бит в битовом поле переменной длины, которое будет записано. Это число включает в себя начальный бит, и счетчик переходит к правому концу битового поля - к нижним битовым числам. Для примера, начиная с бита 5 и записывая 4 бита битового поля, описанного в предыдущем абзаце, это приведет к записи битового поля 1110 в набор данных. Это соответствовало бы startBit
значение 5 и bitlen
значение 4.
Значение параметра ext
определяет, использовать ли самый левый бит битового поля переменной длины для расширения до самого левого бита данных набора данных. Для примера, если 9-битовые целочисленные данные со знаком извлечены из битов 17-25, и бит в положении 25 равен 1, то, когда данные считываются с диска, биты 26-31 будут установлены на 1. В противном случае бит 25 будет равен 0, и биты 26-31 будут установлены на 0. The ext
параметр может быть установлен в true
(или 1) или false
(или 0); задайте true
для расширения знака.
Значение параметра fillone
определяет, заполнять ли «фоновые» биты значением 1 или 0. Этот параметр также установлен на true
(или 1) или false
(или 0).
«Фоновые» биты нестандартного набора данных длины являются битами, которые выпадают за пределы нестандартного поля битов длины, хранящегося на диске. Для примера, если пять битов беззнакового 16-битного целочисленного набора данных, расположенного в битах с 5 по 9, записаны на диск с параметром fillone
установлено на true
(или 1), тогда, когда данные перечитываются в биты памяти от 0 до 4 и от 10 до 15, будет установлено значение 1. Если те же 5-битные данные были записаны в fillone
значение false
(или 0), тогда биты от 0 до 4 и от 10 до 15 будут установлены на 0.
Операция на fillone
выполняется перед операцией на ext
. Для примера используйте ext
Пример выше, биты от 0 до 16 и от 26 до 31 сначала будут установлены на фоновое значение бита, а затем биты от 26 до 31 будут установлены на 1 или 0 на основе значения 25-го бита.
Эта функция соответствует SDsetnbitdataset
в библиотеке HDF С API.
import matlab.io.hdf4.* sdID = sd.start('myfile.hdf','create'); sdsID = sd.create(sdID,'temperature','int32',[10 20]); sd.setNBitDataSet(sdsID,6,4,0,0); data = int32([1:200]); data = reshape(data,10,20); sd.writeData(sdsID,[0 0],data); sd.endAccess(sdsID); sd.close(sdID);