常量和Matlab Coder

5

在Matlab Coder中运行时,有些函数需要输入为常量。我希望找到一种在输入之前将其声明为常量的方法。以下是一个问题情况的示例:

  function foo = subsubfunction(x,y)            
      [B,A]=butter(1,x/y);

这会返回错误信息'所有输入必须是常量'

我该如何声明x和y为常量以使butter()函数正常运行?我尝试了很多解决方案,但不幸的是没有找到令人满意的答案。如果可以使用命令行操作coder.newtype('constant',x),那将简化一切。


你是真的需要常量还是只是一个值而不是向量/数组?你可以使用numel函数... - Smash
你好,谢谢回答!但是您是如何指 numel 函数可以解决这个问题的呢?使用 numel 会以什么方式确保输入是常数? - Michael Ward
1个回答

2
在函数中使用coder.const,这样函数butter就知道你正在传递一个常量输入。文档在这里可用。
 function foo = subsubfunction(x,y)            
  [B,A]=coder.const(@butter,1,x/y);

注意: 您无法在生成的代码中更改x/y的值。您可以分别更改xy,但不能更改这两个数字的比例。


您所参考的文档需要登录,请检查此链接是否相似并考虑更新链接:http://www.mathworks.nl/help/simulink/slref/coder.const.html - Dennis Jaheruddin
当然。谢谢@DennisJaheruddin。链接已更新! - Lokesh A. R.
对我来说不起作用,请查看:https://stackoverflow.com/questions/60202957/matlab-coder-all-inputs-must-be-constant - jpo38

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接