Запишите полосно-перемеженные данные в файл
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...)
пишут многополосные данные в файл, задавая любую из этих дополнительных пар параметра/значения.
Параметр | Описание |
---|---|
| Вектор символов или скаляр строки определение формы и размера каждого элемента, записанного в файл. Смотрите справку для |
| Количество байтов, чтобы пропустить перед элементом First Data. Если файл уже не существует, нулевые значения ASCII записей Эта опция полезна, когда вы пишете заголовок в файл прежде или после записи данных. При записи заголовка в файл после того, как записаны данные, откройте файл с |
| Вектор символов или скаляр строки, чтобы управлять форматом, в котором данные записаны в файл. Типичными значениями является |
| Номер, задающий значение, чтобы использовать вместо недостающих данных. |
interleave
является вектором символов или скаляром строки, который задает, как multibandwrite
чередует полосы, как это записывает данные к файлу. Если data
двумерен, multibandwrite
игнорирует аргумент interleave
. В следующей таблице перечислены поддерживаемые методы и использует этот пример многополосный файл, чтобы проиллюстрировать каждый метод.
Поддерживаемые методы чередующихся полос включают описанных ниже.
Метод | Заданный как | Описание | Пример |
---|---|---|---|
Разделенный по строкам |
| Запишите целую строку из каждой полосы | AAAAABBBBBCCCCC AAAAABBBBBCCCCC AAAAABBBBBCCCCC |
Разделенный по пикселям |
| Запишите пиксель из каждой полосы | ABCABCABCABCABC... |
Разделенный по каналам |
| Запишите каждой полосе в целом | AAAAA AAAAA AAAAA BBBBB BBBBB BBBBB CCCCC CCCCC CCCCC |
Чтобы запустить эти примеры успешно, необходимо быть в перезаписываемой папке.
Запишите все данные (чередованный с методической точностью) к файлу в одном вызове.
data = reshape(uint16(1:600), [10 20 3]); multibandwrite(data,'data.bil','bil');
Запишите одно полосе размещенное рядом изображение с одним призывом к каждой мозаике. Это только полезно, если подмножество каждой полосы доступно в каждом вызове 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
fread
| fwrite
| multibandread