multibandwrite

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

Синтаксис

multibandwrite (данные, имя файла, чередование)
multibandwrite (данные, имя файла, чередование, запускается, totalsize),
multibandwrite... paramValue ...)

Описание

multibandwrite(data,filename,interleave) пишет data, двух-или трехмерный числовой или логический массив, к двоичному файлу, заданному 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], который задает полный, трехмерный размер данных, которые будут записаны в файл.

Примечание

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

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

Параметр

Описание

Точность

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

'offset'

Количество байтов, чтобы пропустить перед первым элементом данных. Если файл уже не существует, нулевые значения 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

Была ли эта тема полезной?