各位大侠急求啊,matlab程序,先经过滤波,然后用滤波后得到的数据进行曲线拟合,总是出错,很急啊。。。

2025-01-05 09:19:42
推荐回答(1个)
回答1:

1.for循环处出错2.拟合函数写错
下面是修改过的;

fn=1600;%采样频率
fp=[80,150]; %要求保留的频段
fs=[60,180];
Rp=3; Rs=30;
Wp=fp/(fn/2);%计算归一化角频率
Ws=fs/(fn/2);
t=0:1/fn:1;
x1=sin(2*pi*300*t); %这里X1是噪声 需要通过带阻滤波滤除
x2=sin(2*pi*120*t); %这里X2是信号,
x=x1+x2;
[n,Wn]=buttord(Wp,Ws,Rp,Rs);%计算阶数和截止频率
[b,a]=butter(n,Wn); %计算H(z)分子、分母多项式系数
y2=filtfilt(b,a,x);
for i=1:fn
if (y2(i)<0 & y2(i+1)>0)
x3=[i,i+1,i+2];
y3=[y2(i),y2(i+1),y2(i+2)];
p=polyfit(x3,y3,1);
end
end