чтение

Считайте данные из буфера

Синтаксис

out = read(asyncBuff)
out = read(asyncBuff,NumRows)
out = read(asyncBuff,NumRows,Overlap)
[out,nUnderrun] = read(asyncBuff,___)

Описание

out = read(asyncBuff) возвращает все непрочитанные выборки в буфер, asyncBuff.

пример

out = read(asyncBuff,NumRows) возвращает выборки NumRows в каждый канал (столбец) буфера.

out = read(asyncBuff,NumRows,Overlap) возвращает выборки NumRows в каждый канал и перекрывает ранее выборки чтения Overlap.

[out,nUnderrun] = read(asyncBuff,___) также возвращает количество строк, дополненных нулем, если недогрузка произошла, с помощью какого-либо из предыдущих аргументов.

Примеры

свернуть все

Система dsp.AsyncBuffer object™ форматы кадра переменной чтения поддержек от буфера.

Создайте Системный объект dsp.AsyncBuffer. Вход является белым Гауссовым шумом со средним значением 0, стандартным отклонением 1 и форматом кадра 512 выборок. Запишите вход в буфер с помощью метода write.

asyncBuff = dsp.AsyncBuffer;
input = randn(512,1);
write(asyncBuff,input);
plot(input)
hold on

Храните данные, которые считаны из буфера в outTotal.

Постройте входной сигнал и данные, которые считаны из буфера в том же графике. Считайте данные из буфера, пока все выборки не будут считаны. В каждой итерации цикла randi определяет количество выборок, чтобы читать. Поэтому сигнал читается в как сигнал переменного размера. Переменная prevIndex отслеживает предыдущее индексное значение, которое содержит данные.

outTotal = zeros(size(input));
prevIndex = 0;
while asyncBuff.NumUnreadSamples ~= 0
    numToRead = randi([1,64]);
    out = read(asyncBuff,numToRead);
    outTotal(prevIndex+1:prevIndex+numToRead) = out;
    prevIndex = prevIndex+numToRead;
end
plot(outTotal,'r')
hold off

Проверьте, что входные данные и данные, считанные из буфера (исключая выборки недогрузки, если таковые имеются), являются тем же самым. Совокупное число превышенных и выборок недогрузки в буфере определяется функцией info.

S = info(asyncBuff)
S = struct with fields:
     CumulativeOverrun: 0
    CumulativeUnderrun: 28

Поле CumulativeUnderrun показывает количество демонстрационной недогрузки на канал. Недогрузка происходит, при попытке считать больше выборок, чем доступный.

Входные параметры

свернуть все

Асинхронный буфер, заданный как Системный объект dsp.AsyncBuffer.

Количество выборок, считанных из каждого канала (столбец) буфера, заданного как положительное целое число. Если требуемое количество выборок больше, чем количество непрочитанных выборок, вывод дополнен нулем.

Функция возвращает выборки NumRows в каждый канал и перекрывает ранее выборки чтения Overlap. Общим количеством демонстрационного чтения является NumRows × NumChann, где NumChann является количеством каналов в буфере. Общим количеством нового демонстрационного чтения является (NumRowsOverlap) × NumChann. Если фрагмент перекрытия содержит выборки, которые перезаписываются и поэтому непрерывно не записаны, вывод дополнен нулем.

Выходные аргументы

свернуть все

Данные считаны из буфера, возвращенного как массив NumRows × выборки NumChann. Если Overlap задан, функция возвращает (NumRowsOverlap) × выборки NumChann. Если требуемое количество выборок больше, чем количество непрочитанных выборок, вывод дополнен нулем.

Типы данных: double
Поддержка комплексного числа: Да

Количество выборок, дополненных нулем в каждом канале (столбец), если недогрузка произошла. Недогрузка происходит, при попытке считать больше выборок, чем доступный. Выборки, которые дополнены нулем в перекрытых фрагментах, не считаются как недогрузка.

Типы данных: int32

Смотрите также

Функции

Системные объекты

Введенный в R2017a