multibandwrite

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

Синтаксис

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

Описание

multibandwrite(data,filename,interleave) записи data, 2D или 3D числовой или логический массив, к двоичному файлу заданы filename. 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)-th полоса.

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

Примечание

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

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

Параметр

Описание

'precision'

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

'offset'

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

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

'machfmt'

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

'fillvalue'

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

Чередование методов

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