exponenta event banner

читать

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

Описание

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

пример

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

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

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

Примеры

свернуть все

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 определяет количество считываемых выборок. Поэтому сигнал считывается как сигнал переменного размера. 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

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

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

свернуть все

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

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

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

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

свернуть все

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

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

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

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

См. также

Функции

Объекты

Представлен в R2017a