主要内容

dsp.AsyncBuffer

描述

dsp.AsyncBuffer系统对象™将样本写入和读取样本先入先出(FIFO)缓冲区。的方法将数据写入缓冲区,和方法从缓冲区中读取数据。在创建对象时,你可以设置缓冲区的数量的样品(行)使用能力财产。通道的数量(列)被设置在第一次调用。通过调用初始化缓冲设置在第一次调用之前

你写的数据占用的下一个可用空间缓冲区。如果缓冲区已满,所有数据在未读(asyncBuff.NumUnreadSamples== asyncBuff.Capacity),最古老的数据与对象覆盖任何新的数据。只有当数据缓冲区删除数据覆盖,所以你可以重读来自过去的数据。的dsp.AsyncBuffer对象支持读写可万博1manbetx变帧大小的信号。有关示例,请参见从缓冲区读取可变帧大小可变帧大小写入缓冲区

一个FIFO缓冲区的读写样本:

  • 创建一个dsp.AsyncBuffer对象并设置对象的属性。

  • 调用写样品到缓冲区。

  • 调用从缓冲区读取样品。

  • 调用偷看阅读样本不改变缓冲区中未读的样本的数量。

创建

描述

例子

asyncBuff= dsp.AsyncBuffer返回一个异步缓冲系统对象,asyncBuff使用缺省属性。

asyncBuff= dsp.AsyncBuffer ()设置能力财产

例子:asyncBuff = dsp.AsyncBuffer (200000);

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

可写/读的行数的缓冲区,指定为一个正整数大于或等于2。在每次写入缓冲区的行数不得超过缓冲区的容量。如果缓冲区已满,所有的数据在未读,最古老的数据与对象覆盖任何新的数据。的CumulativeOverrun属性返回的信息提供样品的数量每通道自上次调用泛滥重置。样品的数量泛滥是未读的数量样品覆盖。

默认情况下,这个属性的数据类型int32

例子:asyncBuff = dsp.AsyncBuffer (200000);

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

这个属性是只读的。

每个通道的未读的样本数量(列)的缓冲区,指定为一个整数大于或等于0。未读的样本总数的缓冲区NumUnreadSamples×numChann。的变量numChann在缓冲通道的数量。频道数量的缓冲区数据列在第一次调用的数量

CumulativeUnderrun属性返回的信息方法给出了样本的数量每通道自上次调用暗流重置。暗流发生如果你试图了解更多比可用的样本。

例子:asyncBuff = dsp.AsyncBuffer;输入= randn (512 1);numUnreadSamples =写(asyncBuff输入)

数据类型:int32

使用

异步缓冲区的读写样本:

  • 创建一个dsp.AsyncBuffer对象并设置对象的属性。

  • 调用写样品到缓冲区。

  • 调用从缓冲区读取样品。

  • 调用偷看阅读样本不改变缓冲区中未读的样本的数量。

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

信息 得到累积泛滥和暗流
从缓冲区读取数据
写数据到缓冲区
偷看 从缓冲区读取数据而不改变数量的未读的样本
一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

dsp.AsyncBuffer系统对象™支持从缓冲区读取可变万博1manbetx帧大小。

创建一个dsp.AsyncBuffer系统对象。输入高斯白噪声平均值为0,标准差为1,一帧512个样本的大小。写的输入缓冲区使用方法。

asyncBuff = dsp.AsyncBuffer;输入= randn (512 1);写(asyncBuff、输入);情节(输入)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。

存储的数据从缓冲区中读取的outTotal

情节的输入信号和数据从缓冲区读取相同的情节。从缓冲区读取数据,直到所有的样本都读。在每一次迭代的循环,兰迪确定样品的数量。因此,信号读入为适应信号。的prevIndex变量跟踪以前的索引值,其中包含的数据。

outTotal = 0(大小(输入));prevIndex = 0;asyncBuff.NumUnreadSamples~= 0 numToRead = randi([1,64]); out = read(asyncBuff,numToRead); outTotal(prevIndex+1:prevIndex+numToRead) = out; prevIndex = prevIndex+numToRead;结束情节(outTotal“r”)举行

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。

验证输入数据和数据从缓冲区读取(不包括暗流样品,如果有的话)是相同的。累积缓冲区的溢出和暗流样本数量的决定信息函数。

S = info (asyncBuff)
S =结构体字段:CumulativeOverrun: 0 CumulativeUnderrun: 28

CumulativeUnderrun字段显示了每个通道的暗流的样本数量。暗流发生如果你试图了解更多比可用的样本。

写一个正弦波可变帧大小的缓冲区。计算FFT的正弦波和可视化结果数组阴谋。

初始化dsp.AsyncBuffer,dsp.ArrayPlot,dsp.FFT系统对象。

asynBuff = dsp.AsyncBuffer;绘图机= dsp.ArrayPlot;fftObj = dsp.FFT (“FFTLengthSource”,“属性”,“FFTLength”,256);

使用生成正弦波在MATLAB函数。的开始完成变量标记每一帧的开始和结束指数。如果有足够多的数据缓存,从缓冲区读取并执行FFT。查看FFT数组阴谋。

开始= 1;Iter = 1: 2000 numToWrite =兰迪([200800]);完成= + numToWrite开始;inputData =罪(开始:完成);开始=完成+ 1;写(asynBuff inputData);asynBuff。NumUnreadSamples > = 256 x =阅读(asynBuff, 256);X = abs (fftObj (X));绘图仪(日志(X));结束结束

从异步读取数据缓冲区不改变未读的样品使用的数量偷看函数。

创建一个dsp.AsyncBuffer系统对象™。100个样本的输入是一个列向量,1到100。把数据写入到缓冲区。

asyncBuff = dsp.AsyncBuffer
asyncBuff = AsyncBuffer属性:容量:192000 NumUnreadSamples: 0
输入= (1:10 0)';写(asyncBuff、输入);

看看前三个样品。输出(1 2 3)”。

着干活= peek (asyncBuff, 3)
着干活=3×11 2 3

NumUnreadSamples是100,表明偷看功能没有改变缓冲区中未读的样本的数量。

asyncBuff.NumUnreadSamples
ans =int32One hundred.

后偷看,读50个样品使用函数。输出(1:50)”。

out2 =阅读(asyncBuff, 50)
out2 =50×11 2 3 4 5 6 7 8 9 10⋮

NumUnreadSamples是50,表明函数改变了缓冲区的未读的样本数量。

asyncBuff.NumUnreadSamples
ans =int3250

现在peek在前三个样品。输出是[51 52 53]”。验证NumUnreadSamples仍然是50。

out3 = peek (asyncBuff, 3)
out3 =3×151 52 53
asyncBuff.NumUnreadSamples
ans =int3250

再次读50个样本。输出现在包含序列[51:100]”。验证NumUnreadSamples是0。

out4 =阅读(asyncBuff)
out4 =50×151 52 53 54 55 56 57 60⋮58 59
asyncBuff.NumUnreadSamples
ans =int320

限制

在调用之前方法,您必须在调用初始化缓冲的设置方法。例如,看到的为什么dsp。当你调用读之前写AsyncBuffer对象错误?

扩展功能

版本历史

介绍了R2017a