MATLAB Answers

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

조회 수: 1(최근 30일)
Kevin Galloway
Kevin Galloway 2021년 7월 28일
댓글: Kevin Galloway 2021년 8월 2일
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

댓글을 달려면 로그인하십시오.

추가 답변(0개)




Community Treasure Hunt

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

Start Hunting!

Translated by