Michael Ward
Michael Ward

Reputation: 213

Constants and Matlab Coder

Some functions requires the input to be a constant, when run in Matlab Coder. I wish to find a way to declare the input as a constant before it is input as an example for the problematic situation:

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

This will return the error 'All inputs must be constant'

How do I declare x and y as constants so that butter() gets happy? I have tried many solutions and unfortunately not found anything really satisfying. If the command line operation coder.newtype('constant',x) could be used it would simplify everything.

Upvotes: 5

Views: 2922

Answers (1)

Lokesh A. R.
Lokesh A. R.

Reputation: 2366

Use coder.const in the function, so that the function butter knows you are passing a constant input. The documentation is available here.

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

Note: You cannot change the value of x/y in the generated code. You could individually change x and y, but not the ratio of the two numbers.

Upvotes: 2

Related Questions