Can the filtfilt function be used in the simulink block matlab function?

조회 수: 8 (최근 30일)
Brecht Vermeulen
Brecht Vermeulen 2018년 7월 23일
댓글: Brecht Vermeulen 2018년 7월 23일
Goodafternoon,
I wanted to use a non-causal filter on a array of datapoints in my Simulink model. Therefore I implemented the filtfilt function in a matlab function block. However, I get the following error:
Simulink does not have enough information to determine output sizes for this block. If you think the errors below are inaccurate, try specifying types for the block inputs and/or sizes for the block outputs.
Component:MATLAB Function | Category:Coder error
Index exceeds array bounds.
Function 'MATLAB Function' (#737.23.38), line 3, column 3:
"filtfilt(1,2,u)"
Launch diagnostic report.
Component:MATLAB Function | Category:Coder error
What could be the problem here? If I use 'filter' it seems to work fine. I included a simple model in the attachment.
Kind regards,
Brecht
  댓글 수: 2
Ryan Takatsuka
Ryan Takatsuka 2018년 7월 23일
It looks like a and b cannot have the same length in the Simulink filtfilt() call for some reason. If you design a filter where a and b are different lengths, it seems to run:
filtfilt([1,1], 2, u)
Brecht Vermeulen
Brecht Vermeulen 2018년 7월 23일
Hi Ryan,
Thank you, indeed, it seems to run with the length of b > a. No idea why this is a problem though. But at least it's a workaround. I'll design a filter of this shape.
Kr brecht

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Measurements and Statistics에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by