multibandwrite

Запись полосно-перемеженных данных в файл

Синтаксис

multibandwrite(data,filename,interleave)
multibandwrite(data,filename,interleave,start,totalsize)
multibandwrite(...,param,value...)

Описание

multibandwrite(data,filename,interleave) пишет data, двух- или трехмерный числовой или логический массив, в двоичный файл, заданный как filename. The filename задается как вектор символов или строковый скаляр. Длина третьей размерности data определяет количество полос данных, записанных в файл. Полосы данных записываются в файл в форме, заданной interleave. Дополнительные сведения об этом аргументе см. в разделе Методы чередования.

Если имя файла уже существует, multibandwrite перезаписывает его, если вы не задаете дополнительный offset параметр. Для получения информации о других необязательных параметрах смотрите последний синтаксис и его описание.

multibandwrite(data,filename,interleave,start,totalsize) пишет data в двоичный файл filename в фрагментах. В этом синтаксисе data является подмножеством полного набора данных.

start массив 1 на 3 [firstrow firstcolumn firstband] который задает местоположение для начала записи данных. firstrow и firstcolumn укажите местоположение верхнего левого пикселя изображения. firstband задает индекс первой записываемой полосы. Для примера, data(I,J,K) содержит данные для пикселя в [firstrow+I-1, firstcolumn+J-1] в (firstband+K-1)-й полоса.

totalsize массив 1 на 3, [totalrows,totalcolumns,totalbands], который задает полный, трехмерный размер данных, которые будут записаны в файл.

Примечание

В этом синтаксисе необходимо вызвать multibandwrite несколько раз, чтобы записать все данные в файл. Первый раз это называется, multibandwrite записывает полный файл, используя значение заливки для всех значений за пределами подмножества данных. В каждом последующем вызове multibandwrite перезаписывает эти значения заливки подмножеством данных в data. Параметры filename, interleave, offset, и totalsize должен оставаться постоянным на протяжении всей записи файла.

multibandwrite(...,param,value...) записывает многополосные данные в файл, задавая любую из этих необязательных пар параметр/значение.

Параметр

Описание

'precision'

Вектор символов или строковый скаляр, задающий форму и размер каждого элемента, записанного в файл. Смотрите справку для fwrite для получения списка допустимых значений. Точность по умолчанию является классом данных.

'offset'

Количество байтов, пропущенных перед первым элементом данных. Если файл еще не существует, multibandwrite записывает значения ASCII null, чтобы заполнить пространство. Чтобы задать другое значение заливки, используйте параметр 'fillvalue'.

Эта опция полезна при записи заголовка в файл до или после записи данных. При записи заголовка в файл после записи данных откройте файл с fopen использование 'r+' разрешение.

'machfmt'

Вектор символов или строковый скаляр для управления форматом, в котором данные записываются в файл. Типичные значения 'ieee-le' для маленького эндиана и 'ieee-be' для большого эндиана. Смотрите справку для fopen полный список доступных форматов. Формат машины по умолчанию является локальным форматом машины.

'fillvalue'

Число, указывающее значение, используемое вместо отсутствующих данных. 'fillvalue' может представлять собой одно число, задающее значение заливки для всех отсутствующих данных или 1-by-Number-of-bands вектор чисел, задающий значение заливки для каждой полосы значений. Это значение используется для заполнения пространства, когда данные записываются фрагментами.

Методы чередования

interleave является вектором символов или строковым скаляром, который задает, как multibandwrite чередует полосы во время записи данных в файл. Если data двумерный, multibandwrite игнорирует interleave аргумент. В следующей таблице перечислены поддерживаемые методы, и этот пример многополосного файла используется для иллюстрации каждого метода.

Поддерживаемые методы перемежения полос включают в себя перечисленные ниже.

Метод

Задается как

Описание

Пример

Полоса - перемежение - по линиям

'bil'

Написание целой строки из каждой полосы

AAAAABBBBBCCCCC 
AAAAABBBBBCCCCC 
AAAAABBBBBCCCCC

Полоса - перемежение на пиксель

'bip'

Запись пикселя из каждой полосы значений

ABCABCABCABCABC...

Полосно-последовательный

'bsq'

Записывайте каждую полосу целиком

AAAAA 
AAAAA 
AAAAA 
BBBBB 
BBBBB 
BBBBB 
CCCCC 
CCCCC 
CCCCC

Примеры

Примечание

Чтобы успешно запустить эти примеры, вы должны быть в папке с возможностью записи.

Пример 1

Запись всех данных (перемежающихся по линиям) в файл одним вызовом.

data = reshape(uint16(1:600), [10 20 3]);
multibandwrite(data,'data.bil','bil');

Пример 2

Запись однополосного мозаичного изображения с одним вызовом для каждой плитки. Это полезно только, если подмножество каждой полосы доступно при каждом вызове multibandwrite.

numBands = 1;
dataDims = [1024 1024 numBands];
data = reshape(uint32(1:(1024 * 1024 * numBands)), dataDims);
 
for band = 1:numBands
   for row = 1:2
      for col = 1:2
 
         subsetRows = ((row - 1) * 512 + 1):(row * 512);
         subsetCols = ((col - 1) * 512 + 1):(col * 512);

         upperLeft = [subsetRows(1), subsetCols(1), band];
         multibandwrite(data(subsetRows, subsetCols, band), ...
                          'banddata.bsq', 'bsq', upperLeft, dataDims);

      end
   end
end

См. также

| |

Представлено до R2006a