Why isn't there a bsxfun block in Simulink?

3 次查看(过去 30 天)
Recently, I have found myself adding 1-line MATLAB Function Blocks to some models, of the form (though not necessarily always with @times):
function y=fcn(u, v)
y=bsxfun(@times, u, v);
I have made some attempts at implementing a general bsxfun block that would let me choose the function from a list, but I can't figure out how to pass the function handle from a mask into the MATLAB Function Block.
So why does this not exist (I have searched)?
Can anyone show me a way to construct the block I have described, without resorting to S-functions (we try to avoid them)?
Thanks!

回答(1 个)

Ryan G
Ryan G 2013-6-25
编辑:Ryan G 2013-6-25
Why doesn't the product block work? It can perform element by element operations. If you are using it for the singleton functionality, you could just copy the smaller array yourself to match the larger array using the selector block.
EDIT: This can also work for other functions supported by bsxfun.
  4 个评论
Nathaniel
Nathaniel 2013-6-25
Thanks, but I'm really looking for a way to do what I asked (i.e., using bsxfun), or a really good explanation for why it can't be done, or is a bad idea.
Ryan G
Ryan G 2013-6-25
There is not anything that I could find capable of the automatic singleton expansion bsxfun performs. There are those workarounds mentioned which may be ok if you want to avoid s-functions. I would suggest putting in an enhancement request and the tech support team could give you a better answer if it's not technically possible (it may be possible just not created).
One last option you could try, but this won't stop you from having to use s-functions. Create a subsystem with the MATLAB function inside of it, then use the right-click generate s-function option. This will create a block for you that runs a mex-file. You can add this to a utilities library along with the rest of your project. This option may be considered a bit cleaner than MATLAB function blocks...

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Simulink Functions 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by