Запишите с чередованием строк данные в файл
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