How to write my own filter function with initial condition similar to Filter.m?
이전 댓글 표시
I have read the documents on how MATLAB implements Filter(b,a,y,z0). To fully understand the concept and learn more about Signal Processing, I tried to implement it by myself, but the answer is different from MATLAB filter.m
Could anyone let me know what I am missingg?! :-(
function y =myfilter(num, den, x, zi)
N = length(x);
% assuming order of Num and Den are the same.
ord = (length(num)-1)/2;
y = zeros(N,1);
for i=1:N
c = 0;
for j=1:2*ord
if i-j < 1
c = c+1;
xo(j) = zi(c);
yo(j) = 0;
else
xo(j) = x(i-j);
yo(j) = y(i-j);
end
end
y(i) = num(1)*x(i) + sum(num(2:end).*xo') - sum(den(2:end).*yo');
end
채택된 답변
추가 답변 (1개)
ssp
2017년 2월 12일
0 개 추천
Hi! Greetings!
I was also trying to write my filter function. However y=filter(b,a,x) seems easy to implement, but I am stuck at implementing y=filter(b,a,x,zi). What would be the new sequence of the following sequence after applying initial condition zi? y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na)
Thanks! SSP
댓글 수: 1
See this full implementation for filter(b,a,X,z): https://www.mathworks.com/matlabcentral/answers/9900-use-filter-constants-to-hard-code-filter#answer_13623
Please do not attach a question as an answer to another question.
카테고리
도움말 센터 및 File Exchange에서 Single-Rate Filters에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!