Запись данных в буфер
Запишите синусоидальную волну переменного размера кадра в буфер. Вычислите БПФ синусоидальной волны и визуализируйте результат на графике массива.
Инициализируйте 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

asyncBuff - Асинхронный буферdsp.AsyncBuffer Системные object™Асинхронный буфер, указанный как dsp.AsyncBuffer Системный объект.
x - Ввод данныхДанные, записанные в буфер, указаны как вектор или матрица. Максимальное количество строк в буфере определяется 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
Поддержка комплексного номера: Да
nOverrun - Количество превышенных пробКоличество выборок, перегруженных в текущем вызове write. Число перезаписанных выборок - это число перезаписанных непрочитанных выборок. Если x является многоканальным входом, то nOverrun - количество строк переполнения данных.
Типы данных: int32
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.