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'))
this error pops up
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.
yeah i matched that too
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!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
