Пакет: 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.
Параметр 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. Параметр 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
в API библиотеки HDF C.
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);