我在从示波器获取数据时遇到了问题。当使用WORD格式时,MATLAB捕获超过字节格式的255和无符号16位整数的65,535的值,并从0循环这些值,从而导致非常扭曲的波形。我使用以下代码,并使用binblockread读取数据:
clear all
clc
close all
%%
DSO_S_104A=instrfind('Type', 'visa-usb', 'RsrcName', 'USB0::0x2A8D::0x904A::MY54340109::0::INSTR', 'Tag', '');
DSO_S_104A.InputBufferSize = 350000;
DSO_S_104A.ByteOrder = 'littleEndian';
fopen(DSO_S_104A);
%% SETUP
set(DSO_S_104A, 'Timeout', 0.5);
%Set number of points
fprintf(DSO_S_104A, ':ACQUIRE:POINTS 48000');
% Set sample rate
fprintf(DSO_S_104A, ':ACQUIRE:SRATE 0.5e9');
% Turn interpolation off for faster averaging
fprintf(DSO_S_104A, ':ACQUIRE:INTERPOLATE OFF');
fprintf(DSO_S_104A,'*TRG');
fwrite(DSO_S_104A,'SYSTem:HEADer OFF');
% Specify data from Channel 1
fprintf(DSO_S_104A,':WAVEFORM:SOURCE CHAN1');
fprintf(DSO_S_104A,':WAVEFORM:FORMAT BYTE');
fprintf(DSO_S_104A,':WAVEFORM:BYTEORDER LSBFirst');
fprintf(DSO_S_104A, 'WAVEFORM:STREAMING OFF');
%%
fwrite(DSO_S_104A,sprintf(':WAV:DATA?\n'));
data2 = binblockread(DSO_S_104A);
plot(data2)
end我想要采样的波形是此图像中的中间波形(黄色):

结果看起来像这样:

数据显然是存在的,但高于255的采样值会循环并扭曲一切。有没有办法解决这个问题?我知道对于相位测量中的2pi跳跃的情况,"unwrap“命令可以提供帮助,但是对于振幅有什么帮助吗?
此外,如果任何人有任何建议,如何加快从范围到MATLAB的数据采集过程,我欢迎任何建议。目前,从示波器中捕获一个“屏幕”需要MATLAB大约0.04秒,这一时间保持不变,最多可达到点数的3-4倍。我可以增加在一次采集中放置多个“范围屏幕”的点数,从而加快处理过程(通过稍后将每个“屏幕”切割成不同的向量),但这也会使数据处理变得更加困难。
发布于 2018-11-15 21:38:28
您应该明确地给出预期的格式。例如data_read = binblockread(DSO_S_104A,'int16');
否则,Matlab可能会以奇怪的方式解释和转换字节流。
另一种解决方案是手动转换从仪器读取的数据:
// read and cast to uint8, as Matlab tends to cast everything to double
data2 = uint8(binblockread(DSO_S_104A));
// now you have an uint8 array with values in the 0-255 range
// typecast (i.e. re-interpret the binary representation of your numbers as another data type, here 'int16')
data_test = typecast(data2(:),'int16'); // or 'int32', or 'float', or 'int8', or...
// try to swap bytes, in case the data from the instrument does not have the same endianness as the computer
data_test_reverse_endianness = swapbytes(data_test);
// plot and see if it makes sense
plot([data_test,data_test_reverse_endianness]);尝试几种格式,使用或不使用swapbytes,看看哪一种有效。
发布于 2018-11-21 18:25:47
如果有人遇到类似的问题,这里是我如何解决的:最后,这个问题是示波器上的偏移电压加上v/div设置。由于某些原因,归零偏移量是一个主要问题。我提高了偏置电压(这基本上提高了示波器上的波形),直到我开始捕获正确的波形,并播放了一点伏特/div设置(程度较小)。奇怪的问题。
https://stackoverflow.com/questions/53319570
复制相似问题