我正在尝试使用Matlab从Lecroy 12位示波器捕获数据。
我创建了visa对象"scope",将格式长度设置为"word“(16位),然后使用"fread”获取16位有符号整数形式的波形数据:
fwrite(scope,'comm_format Def9,word,bin'); % The only relevant thing here is the "word" setting
fwrite(scope,'C1:Wf?'); % This gets the waveform from channel 1 on the scope
[wf]=fread(scope,SampleSize,'int16');问题是捕获的数据上有8位噪声。我附上了一张显示波形放大部分的图片。你可以看到有一个信号,将是示波器的完整12位分辨率,但似乎偶尔会有被数字化到8位的毛刺。这些毛刺不会出现在示波器上,只会出现在捕获的数据上。
以下是我的示例数据:

有没有人知道这是什么原因以及我如何纠正它?
发布于 2018-09-13 20:28:17
您的示波器数据是12位,但您使用的是16位的“字”。使用'bit12‘标志可能会解决你的问题。还要记住在fread()函数中使用'bit12‘。
发布于 2021-08-19 17:38:55
屏幕截图看起来有点像8位的示波器样本,12位是通过对多个样本进行平均得到的。这是在sigma delta转换器中提高分辨率的一种常见做法。我正在试着画一幅ASCII图:
signal ---->(+)----->8 bit ADC --> digital averaging 256 samples --> 12 bit
|
noise (+-1LSB)也许你必须在软件中实现这一点,以便从原始数据中获得12位。( 12位的4个LSB信息在256个8位样本的统计分布中)如果你看着屏幕,你已经看到了处理过的数据,而不是原始数据。
发布于 2021-08-19 20:43:54
我会:
参考示波器手册,了解示波器对visa-capture-data数据应用了什么处理,以及对示波器显示屏上显示的数据应用了什么处理。如果它们是不同的,这可能就是问题所在。请查阅示波器制造商提供的有关接口的任何文档,将其与matlab/NI的接口文档进行比较,以查找预期格式上的任何差异。
尝试查看原始数据,即网络上的字节,看看是否存在格式问题。与visa所期望的格式相比。
操作数据集以查找模式。使用像pyvisa这样的东西,它可以让你快速尝试许多不同的参数。
运行不同的信号并检查模式。特别是寻找8位样本的数量与频率、振幅之间的任何关系。尝试交流和直流耦合。也有可能存在来自数字通信的干扰,您可以尝试使用隔离变压器隔离电路,或将隔离数字链路连接到示波器(尽管如果使用以太网,它可能已经通过磁件隔离)。
在寻求帮助时,我会提供更多细节。我会提供的一些东西是使用的示波器,我试图解决问题的东西,捕获图上的轴标签,捕获样本的转储以及我正在使用的仪器连接类型(lan,485等)。
最后,如果我解决了问题,尝试了提供的解决方案,但没有任何运气,或者放弃了所有希望,跑去加入了马戏团,我肯定会更新我的问题,以反映这一点。
https://stackoverflow.com/questions/52194237
复制相似问题