Запишите с чередованием строк данные в файл
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 ...)
пишут многополосные данные в файл, задавая любую из этих дополнительных пар параметра/значения.
Параметр | Описание |
---|---|
| Вектор символа или скаляр строки определение формы и размера каждого элемента, записанного в файл. Смотрите справку для |
| Количество байтов, чтобы пропустить перед первым элементом данных. Если файл уже не существует, нулевые значения 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