запись

Запишите данные, чтобы буферизовать

Синтаксис

nOverrun = write(asyncBuff,x)

Описание

пример

nOverrun = write(asyncBuff,x) пишут входной массив, x, к объекту буферизации, asyncBuff, и возвращают количество превышенных выборок, nOverrun.

Примеры

свернуть все

Запишите синусоиду переменного формата кадра к буферу. Вычислите БПФ синусоиды и визуализируйте результат на графике массивов.

Инициализируйте dsp.AsyncBuffer, dsp.ArrayPlot и Системные объекты dsp.FFT.

asynBuff = dsp.AsyncBuffer;
plotter = dsp.ArrayPlot;
fftObj = dsp.FFT('FFTLengthSource','Property','FFTLength',256);

Синусоида сгенерирована с помощью функции sin в MATLAB. Переменные start и finish отмечают запуск и индексы конца каждого кадра. Если достаточно данных кэшируется, читайте из буфера и выполните БПФ. Просмотрите БПФ на графике массивов.

start = 1;

for Iter = 1 : 2000
    numToWrite = randi([200,800]);
    finish = start + numToWrite;

    inputData = sin(start:finish)';
    start = finish + 1;

    write(asynBuff,inputData);
    while asynBuff.NumUnreadSamples >= 256
        x = read(asynBuff,256);
        X = abs(fftObj(x));
        plotter(log(X));
    end
end

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

свернуть все

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

Данные записаны в буфер, заданный как вектор или матрица. Максимальное количество строк в буфере определяется свойством Capacity asyncBuff. Количество каналов в буфере определяется вторым измерением First Data, записанной в буфер. Последовательные вводы данных могут отличаться по количеству строк, но количество каналов должно остаться фиксированным. Чтобы изменить количество каналов, необходимо вызвать release на буфере.

Например, следующее принято:

asyncBuff = dsp.AsyncBuffer;
% First call to write
write(asyncBuff,randn(15,5)); 
% Add more data with a different number of rows
write(asyncBuff,randn(25,5)); 
write(asyncBuff,randn(5,5));

Следующее не принято и ошибки:

asyncBuff = dsp.AsyncBuffer;
% First call to write
write(asyncBuff,randn(15,5)); 
% Add more data with a different number of columns
write(asyncBuff,randn(15,15));

Чтобы изменить количество каналов, вызовите release на буфере.

asyncBuff = dsp.AsyncBuffer;
% First call to write
write(asyncBuff,randn(15,5)); 
release(asyncBuff)
% Add more data with a different number of columns
write(asyncBuff,randn(15,15));

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический
Поддержка комплексного числа: Да

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

свернуть все

Количество выборок, превышенных в текущем вызове write. Количество превышенных выборок является количеством непрочитанных перезаписанных выборок. Если x является многоканальным входом, то nOverrun является количеством строк потерь данных.

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

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

Функции

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

Введенный в R2017a

Для просмотра документации необходимо авторизоваться на сайте