read

Чтение данных из буфера

Описание

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

пример

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

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

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

Примеры

свернуть все

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

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

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

Figure contains an axes. The axes contains an object of type line.

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

Постройте график входного сигнала и данных, которые считываются из буфера на том же графике. Считывайте данные из буфера до тех пор, пока не будут считаны все выборки. В каждой итерации цикла randi определяет количество считываемых выборок. Поэтому сигнал считывается как сигнал переменного размера. The 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

Figure contains an axes. The axes contains 2 objects of type line.

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

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

The CumulativeUnderrun В поле показано количество выборок на канал. Underrun происходит, если вы пытаетесь считать больше выборки, чем доступно.

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

свернуть все

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

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

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

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

свернуть все

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

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

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

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

См. также

Функции

Объекты

Введенный в R2017a