SIMULINK Action subsystem with 1D-lookup Table, which data is not always available
2 次查看(过去 30 天)
显示 更早的评论
Hello everybody,
I have question regarding Simulink subsystems, look-up tables and size mismachtes:
In my model I have two subsystems, which are controlled via a if-block. So subsystem number one is activated, if I have one type of aggregat, subsystem two, if I have another aggregat. Inside each subsystems I use the interp1 command in a MatLab Function block.
My problem is, that if on type of aggreagt activates one subsystem, the input data for interp1 look-up-table in the second subsystem is X=0,Y=0. So I get the error message: "There should be at least two data points."
But if I try this:
if size(X,1)==1
X=[X X+1];
Y=[Y Y];
end
Data=interp1(X,Y,xi);
I get the error message "size mismatch (size[1x1]~=size[1x2]).
Anybody a idea or tipss how to solve this? Thanks!
0 个评论
采纳的回答
Orion
2014-12-9
Hi,
First, why don't you use a look-up table block instead of a matlab function ?
Second, are you sure of the values of X and Y when the error occured ? You can profit the use of a matlab function by putting a breakpoint at the line Data=interp1(X,Y,xi);. This way the simulation will pause every time you arrive there, and you can check the values of all your variables inside the command window.
3 个评论
Orion
2014-12-9
I wasn't paying attention.
The error occured because you redefined the inputs X and Y. It works In Matlab, but this is not working in Simulink, because Simulink need to calculate the size of the I/O signals, and here, it can't be done.
One way to solve your issue :
if size(X,1)==1
Abs = [X X+1];
Ord = [Y Y];
else
Abs = X;
Ord = Y;
end
Data=interp1(Abs,Ord,xi);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Subsystems 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!