使用 MATLAB 绘制实时数据

PLot Realtime data using MATLAB

我正在尝试绘制来自频率为 25 Hz 的传感器的实时数据。我使用 TCPIP 协议从传感器读取数据,对其进行解析,然后绘制数据。然而,绘图部分不是很快,一段时间后开始滞后。所以例如如果我移动传感器,我会在 5 秒后看到响应。我在 Arduino 中使用了 Serial Plotter(它的规格比我的笔记本电脑少得多),但它能够在没有任何延迟/问题的情况下绘制实时数据。

我的代码看起来有点像下面这样

IMUData = nan(1500,6);
InterfaceObject = tcpip('my_ip_address',50001);
InterfaceObject.BytesAvailableFcn ={@PlotSensorData};

PlotSensorData 函数看起来像

    function PlotSensorData(~,~)

        RecievedData = fscanf(InterfaceObject,'%s');
        Identifier = RecievedData(6); % 6th byte is the sensor identifier

        DataStartIdx = 28; % For each sensor, data start position is common 

        if Identifier == 'I'

            DataEndIdx = DataEndPosition(RecievedData, 1); 

            SlicedData = RecievedData(DataStartIdx:DataEndIdx);
            ParsedData = textscan(SlicedData,'%f', 'Delimiter',',');

            % Append new data to IMUData matrices
            prevval = IMUData;
            val = [prevval(2:end,:); ParsedData{1}'];
            IMUData = val;

            set(PlotHandle{1},'ydata',val(:,3));                     
            set(TopAxes,'ylim',[-15 15]); 
            drawnow limitrate;
       end

  end

此外,我已经尝试过 animatedLine,而不是使用绘图。最初看起来更快,因为它绘制得非常快,但过了一段时间,它也开始滞后,滞后超过 10 秒。

所以我的问题是

谢谢

异步读取数据而不是连续读取数据解决了我的问题。