variable size of simulink matlab function

function desired = path_planning(data_points,slope0,slopeF,dt)
t_dummy=0:((length(data_points))-1);
tq=0:(dt/10):((length(data_points))-1);
desired=spline(t_dummy,[slope0; data_points; slopeF],tq);
end
error "Data 'desired' is inferred as a variable size matrix, while its properties in the Model Explorer specify its size as inherited or fixed. Please check the 'Variable Size' check box and specify the upper bounds in the size field."
i am also attaching the simulink file, can you please see what is issue here? the same function works fine in matlab but not in simulink.

 采纳的回答

Run the attached model. What you basically needed to do is to go to Model Explorer and set the output of the MATLAB Function as variable size by checking the tickbox there. Also, specify the size of the output.

16 个评论

Not working.... the point to think is, data_points are variable input vector, it's length will define the size of output vector.... so how can i tell the simulink it's size beforehand in model explorer?
It worked for me without any error. Are you sure it is not working?
Yes, you can tell it by writing
str2num(get_param('open_loop_for_matlab_edited/Constant3','Value'))
same error, it seems increasing size don't matter here. Also Simulink is not handling varsize of array.
What is the code in your MATLAB Function?
function desired = path_planning(data_points,slope0,slopeF,dt)
t_dummy=0:((length(data_points))-1);
tq=0:(dt/10):((length(data_points))-1);
desired=spline(t_dummy,[slope0; data_points; slopeF],tq);
end
Add this line to your function at the very beginning. Also, check the attached figure to make sure your Model Explorer contains the necessary information.
function desired = path_planning(data_points,slope0,slopeF,dt)
desired=zeros(data_points(1),data_points(2));
t_dummy=0:((length(data_points))-1);
tq=0:(dt/10):((length(data_points))-1);
desired=spline(t_dummy,[slope0; data_points; slopeF],tq);
end
not working, but i need to say thank you.
Have you checked my attached figure? Have you verified that it is the same as yours? Check for the model and block name match.
There you see your model's name is open_loop_for_matlab but in size field, the model name is open_loop_for_matlab_reedited. Erase the _reedited part to match the model name with the content of get_param. Note that they should be matching at every letter. Try this.
they are matching now, still same error
hamza's answer moved here:
thanks Birdman, i got a solution from this discussion. i first need to define var size where you asked me to. So it outputs the correct results.
You are welcome. Actually, there was nothing else I could suggest because it should have worked with the way that I suggested. Anyway, I am glad it works.

请先登录,再进行评论。

更多回答(1 个)

The same question but in my case I need to check that variable size and specify its size through commands.
I have connected to the function block to the model through commands and the output of the function comes into picture when I ran code which is of variable based on the input.
Please can some one help how to check the box and specify its size through some commands.

类别

帮助中心File Exchange 中查找有关 Interactive Model Editing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by