📄 firbynna.m
字号:
clc ;close all; clear all;
N=31;
p=(N-1)/2;
E=3;
Hd=[zeros(1,12) 0.25 0.78 ones(1,13) 0.78 0.25 zeros(1,12)]; %加过渡点的带通设置
Hd=[ones(1,12) 1 1 ones(1,13) 0 1 ones(1,12)]; %加过渡点的带通设置
Hd=[ones(1,12) 0 ones(1,13) 0 ones(1,12)]; %加过渡点的带通设置
Hd=[1 ones(1,7) 0 ones(1,14) 0 ones(1,7)]; %加过渡点的带通设置
% Hd=[1 ones(1,6) 0.8 0 0.8 ones(1,12) 0.8 0 0.8 ones(1,6)]; %加过渡点的带通设置
% Hd=[1 ones(1,6) 0.6 0 0.6 ones(1,12) 0.6 0 0.6 ones(1,6)]; %加过渡点的带通设置
u=0.002;
delta=4.62e-5;
w=randn(1,p+1)';
wi=[0:p]*pi/p;
op=zeros(p+1,p+1);
% op(1,:)=1;
nrow=[0 1:p]'
op=cos(nrow*wi);
disp('看看op的大小');
size(op);
w_=w'
kk=1;
while(E>delta)
E=0;
for k=1:p+1;
y=w'*op(:,k);
er1=abs(Hd(k))-y;
% E=E+1/2*er1*er1;
E=E+er1*er1;
w=w+u*er1*op(:,k);
end
kk=kk+1;
end
% disp(['循环的次数n=' int2str(kk)]);
% title(['N=' int2str(N)]);
disp(['循环的次数n= ' int2str(kk) '次']);
h=zeros(1,p+1);
h(p+1)=w(1);
for k=p:-1:1
h(k)=w(p+2-k)/2;
end
h=[h h(p:-1:1)]
[HH,ww]=freqz((h));
% subplot(2,2,3);
% stem(h); xlabel('滤波器的系数');
subplot(2,2,1); plot(ww,abs((HH))); xlabel('幅频特性');grid on;
set(gca,'XTick',0:pi/N*2:pi)
set(gca,'XTickLabel',{0:N/2});
subplot(2,2,2); plot(ww,20*log10(abs(HH))); xlabel('衰减特性');grid on;
set(gca,'XTick',0:pi/N*2:pi)
set(gca,'XTickLabel',{0:N/2});
set(gcf,'color','w')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -