MATLAB Answers

0

Simulink - Constant as an argument to a MATLAB function block

Asked by tronburgundy on 5 Nov 2018
Latest activity Answered by Sebastian Castro on 7 Nov 2018
I am attempting to use upfirdn in a MATLAB function block, as in the following example, where x is a signal and h is an input from a constant block:
function y = useupfirdn(x, h)
% ... Initialize output, etc.
% ... Do more stuff...
y = upfirdn(x, h);
When I run the model, I get an error that says "The filter H must be constant." The same happens when it is used as a parameter.
I do not get the error when I build the filter using firls within the function block. However, the point of having it as an argument or a parameter is that I compute the coefficients prior to running the simulation, which would save time since the block is called often.
Is there something that I am missing?

  0 Comments

Sign in to comment.

1 Answer

Answer by Sebastian Castro on 7 Nov 2018

Unfortunately, this is a documented limitation:
It seems like most of the FIR filter functionality in DSP System Toolbox has this limitation, so it's not specific to the upfirdn function.
Since you're trying to do this from a MATLAB Function block, I would recommend using the Simulink blocks for upsampling, downsampling, and filtering instead? Specifically, the filters can accept coefficients from an input port:
More generally, there's a whole page showing how to implement these in Simulink:
- Sebastian

  0 Comments

Sign in to comment.