exponenta event banner

написать

Запись данных в буфер

Описание

пример

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 переменные отмечают начальный и конечный индексы каждого кадра. Если кэшируется достаточно данных, считывайте из буфера и выполняйте FFT. Просмотр БПФ на графике массива.

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. Количество каналов в буфере определяется вторым измерением первых данных, записанных в буфер. Последовательные входные данные могут изменяться по количеству строк, но число каналов должно оставаться фиксированным. Для изменения количества каналов необходимо вызвать 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 | logical
Поддержка комплексного номера: Да

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

свернуть все

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

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

См. также

Функции

Объекты

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