Пакет: 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 параметр указывает крайнюю левую позицию записываемого битового поля переменной длины. Например, в битовом поле, описанном в предыдущем параграфе a startBit значение параметра 4 соответствует четвертому битовому значению 1 справа.
Параметр bitlen указывает количество битов в битовом поле переменной длины, которое должно быть записано. Это число включает в себя начальный бит, и подсчет продолжается к правому концу битового поля - к младшим битовым числам. Например, начиная с бита 5 и записывая 4 бита битового поля, описанного в предыдущем параграфе, битовое поле 1110 будет записано в набор данных. Это соответствовало бы startBit значение 5 и a 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 в библиотеке HDF C 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);