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