Best way to buffer vector data in Simulink for processing over a time window

7 ビュー (過去 30 日間)
I'm working with a lidar-equipped robot, and every 0.2 seconds it provides an array of 360 values corresponding to the return intensity received at each angle. For my application, I need to do some statistical analysis on the data over a user-defined time-window. For offline processing in MATLAB, I've just been appending each new array of scan values to a matrix, so that I have a 360-column "Intensities" matrix which grows over time, and I can select the time-window for processing by selecting the appropriate rows from the matrix.
intensitiesMatrix(i,:) = new_scandata_array;
Now I'm trying to transition my code to Simulink (particularly because I want to use Stateflow for certain aspects of my application) and I want to do the same kind of data buffering so I can perform windowed processing on the data in real-time. For some reason I'm having a hard time figuring out the best way to collect my successive scan vectors into a form that I can then process, as I did in my regular MATLAB approach. I've looked a bit at Data Stores; is that the right approach? Or is there a good way to do this with matrices as I was doing in MATLAB?


Jonas 2021 年 7 月 29 日
Using Data Stores would indeed be a solution.
However, the dimensions of your matrix increases over time, making it a variable size variable. This has many implications, and certainly is not good code to deploy on a physical hardware target. At some point it would just run out of memory. Typically you will need to set a maximum matrix size that it may grow into to make sure you don't get a memory overrun.
  3 件のコメント
Kevin Galloway
Kevin Galloway 2021 年 8 月 2 日
Great; thanks for the helpful response!


その他の回答 (0 件)




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by