Effacer les filtres
Effacer les filtres

Importing data into a "Matlab function" simulink block and interpolating values

8 vues (au cours des 30 derniers jours)
Jan Soller
Jan Soller le 26 Oct 2023
Commenté : Jon le 30 Oct 2023
Hello everyone,
My problem is quite simple, but for several hours now I've been stuck with error messages that I can't correct.
I'm trying to create a simulink block which takes as input a continuous "speed" signal, a continuous "load" signal and an Excel table which references a temperature as a function of "speed" (1st line of my Excel, 61 values from 0 to 15m/s) and "load" (1st column, 61 values from 0 to 1000kg in constant steps). So I'm trying to write a script/command in a "Matlab function" simulink block that takes the input signals into account, and then interpolates the data to obtain a resulting temperature. Example: at a given time, speed = 2.12m/s and load = 628kg, which gives me for output an interpolated temperature in my table.
A first basic code worked on Matlab (without using simulink or else) taking into account fixed input values. Here it is below:
filename = 'Hysteresis Coefficient_Matlab.xlsx'; % Name of Excel file
sheet = 1;
data = xlsread(filename, sheet);
% Split the data into load, speed and temperature
load = data(2:62, 1); % First column
speed = data(1, 2:62); % First raw
temperature = data(2:62, 2:62);
% Define the input values
load_input = 522; % [500 kg]
speed_input = 5.1; % [m/s]
% Use of the interp2 fonction
temperature_researched = interp2(speed, load, temperature, speed_input, load_input);
% Display the researched temperature
fprintf('For a charge of %.1f kg and a speed of %.1f m/s, the interpolated temperature is %.2f\n', load_input, speed_input, temperature_researched);
Unfortunately, as soon as I want to do the same thing in a "Matlab function" simulink block so that all the simulation is done only on simulink, nothing works and I always get an error message like this:
An error occurred while running the simulation and the simulation was terminated
Caused by:
load = data(2:62, 1); % First column
I'm open to all your suggestions and I hope you'll be able to resolve the situation.
Thank you in advance
Thibault
  2 commentaires
Jon
Jon le 26 Oct 2023
Please attach your .xlsx files, your Simulink files and any .m files that you make use of so that we can reproduce your problem
Jan Soller
Jan Soller le 26 Oct 2023
Hello Jon, I also uploaded the concerned files. Hope it will be enough to run and test the simulation!

Connectez-vous pour commenter.

Réponse acceptée

Jon
Jon le 26 Oct 2023
The problem is that the block that provides "data" is a from workspace block rather than a constant. You should replace it with a constant and assign the constant's value to the workspace variable you call data
  4 commentaires
Jan Soller
Jan Soller le 30 Oct 2023
Hello Jon,
Sorry for this late answer, yes I finally got my results by replacing the from workspace with the constant block. I was convinced that I had already tried this solution at the beginning but apparently I maybe had trouble linking to my Data table.
Thanks a lot for your help!
Jon
Jon le 30 Oct 2023
Glad you got it working, good luck with your project

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Programmatic Model Editing dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by