Running Simulink simulation with input signals from matlab - I've got a working command but can't find it in documentation
6 次查看(过去 30 天)
显示 更早的评论
Hello,
I was looking for a way to run a simulink simulation programatically from matlab command with a given vector as a signal to the input block.
I couldn't find anything in help or google, but finally a friend reccomended me this command:
[tOut, xOut, yOut] = sim('model', timeVector, [], inputSignal);
Where inputSignal is a matrix with first column being a time vector and a second column of corresponding input values.
The problem is that matlab documentation doesn't say anything about using "sim" command in this way! Or at least I cannot find it. Could someone provide me with any official information about it, why does it work? And what is the third ([]) parameter about?
0 个评论
采纳的回答
Ced
2016-3-10
编辑:Ced
2016-3-10
Hi
You cannot find it because it's deprecated (although should still work, even in the new versions of matlab). This is the help page you are looking for:
I usually do it slightly differently: In simulink, I use an "Input Block" as an input. Then, in my script, I define a "timeseries" object.
example:
% define simulation time
t0 = 0;
tend = 10;
dt = 0.001;
t = t0:dt:tend;
% Generate unit step input
amplitude = 1;
t_step = 1; % I want a step at t = 1s
ind_vec = (t < t_step);
u = amplitude*ones(size(t));
u(ind_vec) = 0;
% create time series object
u_sim = timeseries(u,t,'Name','step_input');
% Now simulate system
% NOTE: the Input Block in your model must have "u_sim" set as parameter
sim('model')
I use a "to Workspace block" for the outputs. Just as a possible alternative.
Hope this helps.
2 个评论
Ced
2016-3-10
Yes, I meant the "From Workspace" block. Once you connect it, the title in the properties somehow changed to "Input Block" for me, hence the confusion. My bad.
I mean, you can pass any input you want, I just gave the step as an example. I don't really see how your case would be more generalizable.
But yes, I don't really like the new input method either. It feels like having a global variable floating around, which is evil imo. I'm sure there is a way of explicitly passing the parameter to the input block, but I never looked into that.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!