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