0

我正在尝试使用 Butter 值过滤器过滤短音频文件,然后使用 Butter.m 给出的系数递归求解差分方程的函数。

我的代码如下。

[x,Fs]=wavread('bugsbunny1');

wn=2500/(Fs/2);
n=10;
[B,A]=butter(n,wn);

C=zeros(1,10);
for n=2:10
    C(n-1)=-A(n);          %rearrange A for the recur function
end
A=C;

x=x';                      % make x a row vector                  
n=11:length(x);
y0=zeros(1,11);
x0=zeros(1,11);

y1=recur(A,B,n,x,x0,y0);    %calculate approximation recursively
y1=[y0 y1];     %add initial conditions to vector 

这样做会导致 y1 是由“NaN”给出的无效数据矩阵,感谢您的帮助。

递归函数的代码:

function [ y ] = recur(a,b,n,x,x0,y0)
%Use Recursion to approximate solution to first order differential equation
%   Detailed explanation goes here
N=length(a);
M=length(b)-1;
y=[y0 zeros(1,length(n))];
x=[x0 x];
a1=a(length(a):-1:1);
b1=b(length(b):-1:1);
for i=N+1:N+length(n),
    y(i)=-a1*y(i-N:i-1)'+b1*x(i-N:i-N+M)';
end
y=y(N+1:N+length(n));
4

0 回答 0