New to simulink, how do I import data from a CSV to be used in a simulation?

I have a couple columns of data that I want to be used in my simulation, each one is 32 rows long.
I tried to use the data inspector to import the CSV data, but I get an error where it tells me that the time values are not increasing monotonically. And that would be correct, because they are not time values. The data I'm trying to use in my simulation is increasing and decreasing.
Specifically the orange and blue lines in this picture
I guess I'm not supposed to use the data inspector to get this data into my simulation. What should I be doing/using? Thanks

1 Comment

Does the data have time information? If not, how are you going to use the data for simulation?

Sign in to comment.

Answers (1)

The issue you're running into is that Simulink can't import data without knowing the timebase for it. Every input entry has to get tagged with a time before Simulink can use it.
There are several ways to do this. For instance:
1) If you're importing Excel or CSV data directly into Simulink, the data must include time as the first column. If you use a From Spreadsheet block to import the data, you'll just need to create a column at the left with time values.
2) If modifying the spreadsheet isn't an option, you can read the data into MATLAB using readtable, convert the table output to an array with table2array, add time values as the first column, and import that data into Simulink using Data Import/Export or the From Workspace block.
I can provide more information on either. The first option would be a little simpler if you have the ability to modify the spreadsheet data, but either way should work reliably once it's set up properly.

3 Comments

Thank you! I will try the first option, as I have a time column but it was set as the last column. If I have any more issues I'll come back here.
I guess I'm having trouble figuring out how to extract the different columns from this from spreadsheet block. I want to feed each column (except for time) into different areas of my simulation. I'm trying to find a tutorial as we speak but figured I'd also put it here
It looks like once the block can handle the data, you should just get as many outputs from the block as you have data columns in the data. Then you can route each output to a different place as desired. Could you attach a screenshot of what you're seeing?

Sign in to comment.

Categories

Find more on Simulink in Help Center and File Exchange

Products

Release

R2023a

Asked:

on 12 Jul 2023

Commented:

on 13 Jul 2023

Community Treasure Hunt

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

Start Hunting!