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