matlab.io.hdf4.sd.setNBitDataSet

Пакет: 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);

См. также