dir2fs.m

来自「the file contain many matlab signal sour」· M 代码 · 共 32 行

M
32
字号
function [C,B,A]=dir2fs(h);
% Direct form to Frequency Sampling form conversion
% ---------------------------
% [C,B,A]=dir2fs(h)
% C=Row vector containing gains for parallel sections
% B=Matrix containing numerator coefficients arranged in rows
% A=Matrix containing denominator coefficients arranged in rows
% h=impulse response vector of an FIR filter
%
M=length(h);
N=fft(h,M);
magH=abs(N);phaH=angle(N)';
% check even or odd M
if (M==2*floor(M/2))
    L=M/2-1;% M is even 
    A1=[1,-1,0;1,1,0];
    C1=[real(N(1)),real(N(L+2))];
else
    L=(M-1)/2;% M is odd
    A1=[1,-1,0];
    C1=[real(N(1))];
end
k=[1:L]';
% initialize B and A arrays
B=zeros(L,2);A=ones(L,3);
% compute denominator coefficients
A(1:L,2)=-2*cos(2*pi*k/M);A=[A;A1];
% compute numerator coefficients
B(1:L,1)=cos(phaH(2:L+1));
B(1:L,2)=-cos(phaH(2:L+1)-(2*pi*k/M));
% compute gain coefficients
C=[2*magH(2:L+1),C1]';

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?