Saving vectors for consecutive timesteps and turn them into an array
6 次查看(过去 30 天)
显示 更早的评论
I have built a Simulink model which has 5 input signals. Once the scalar values get normalized I turn these 5 signals into a vector by using the Mux Block.

My LSTM (Block: Stateful Predict) needs a numeric array as an input. This works perfectly fine when I am using the constant block with predefined values. However it would not accept a vector as it needs a timeseries.

What would be the best way to save 10 vectors from 10 consecutive timesteps and turn them into an array in order to give my neural network a valid input? I did not find suitable Simulink blocks, so maybe it can only work with a Matlab function block?
Thanks a lot in advance!
Kind Regards
0 个评论
回答(1 个)
Samay Sagar
2024-2-23
To provide a sequence of vectors as input to the LSTM 'Stateful Predict' block in Simulink, you can accumulate the vectors over time within a MATLAB Function block and transform it to a “timeseries”.
Here’s how you can implement this:
Add a MATLAB Function block to your Simulink model to store and update a buffer that accumulates vectors from consecutive timesteps. You can now use this output as input to your “Stateful Predict” block.
function timeseriesData = inputToTimeSeries(u)
% u: Current input vector from the Mux block
% Define persistent variables for the buffer vector
persistent buffer;
buffer = [buffer ;u];
% Convert the buffer to a timetable
timeseriesData = array2timetable(buffer, 'TimeStep', seconds(0.2));
end
Read more about “array2timetable” here:
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Deep Learning with Simulink 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!