📄 fir5116.m
字号:
function Hd = fir5116
%FIR18 Returns a discrete-time filter object.
%
% M-File generated by MATLAB(R) 7.1 and the Signal Processing Toolbox 6.4.
%
% Generated on: 18-Apr-2009 20:51:47
%
% Equiripple Bandpass filter designed using the FIRPM function.
% All frequency values are in kHz.
Fs = 40800; % Sampling Frequency
Fstop1 = 3200; % First Stopband Frequency
Fpass1 = 7200; % First Passband Frequency
Fpass2 = 13200; % Second Passband Frequency
Fstop2 = 17200; % Second Stopband Frequency
Dstop1 = 0.0056234132519; % First Stopband Attenuation
Dpass = 0.057501127785; % Passband Ripple
Dstop2 = 0.0056234132519; % Second Stopband Attenuation
dens = 16; % Density Factor
% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fstop1 Fpass1 Fpass2 Fstop2]/(Fs/2), [0 1 ...
0], [Dstop1 Dpass Dstop2]);
% Calculate the coefficients using the FIRPM function.
b = firpm(N, Fo, Ao, W, {dens});
Hd = dfilt.dffir(b);
%————————————————————————————————————————
%线性调频信号
PI=3.1415926;
As=1; %输入信号幅度
f1=8200; %输入信号频率
f2=12200;
fs=51000; %采样频率 51kHz
dT=0.1 ;% 300ms
t=0:dT*fs-1;
k=(f2-f1)/length(t);
f=f1+k*t;
y=As*sin(2*PI*f.*t/fs);
%————————————————————————————————————————
%y=round(y*2^16); %16位归一化
p=16 %定点位数
%————————————————————————————————————————
Y=awgn(y,10); %信噪比10
Y=round(Y*2^p); %16位归一化
bb=filter(b,1,Y);
bb=round(bb/2^p);
Y1=awgn(y,7); %信噪比7
Y1=round(Y1*2^p); %16位归一化
bb1=filter(b,1,Y1);
bb1=round(bb1/2^p);
Y2=awgn(y,5); %信噪比5
Y2=round(Y2*2^p); %16位归一化
bb2=filter(b,1,Y2);
bb2=round(bb2/2^p);
Y3=awgn(y,2); %信噪比2
Y3=round(Y3*2^p); %16位归一化
bb3=filter(b,1,Y3);
bb3=round(bb3/2^p);
Y4=awgn(y,0); %信噪比0
Y4=round(Y4*2^p); %16位归一化
bb4=filter(b,1,Y4);
bb4=round(bb4/2^p);
Y5=awgn(y,-2); %信噪比-2
Y5=round(Y5*2^p); %16位归一化
bb5=filter(b,1,Y5);
bb5=round(bb5/2^p);
Y6=awgn(y,-5); %信噪比-5
Y6=round(Y6*2^p); %16位归一化
bb6=filter(b,1,Y6);
bb6=round(bb6/2^p);
Y7=awgn(y,-7); %信噪比-7
Y7=round(Y7*2^p); %16位归一化
bb7=filter(b,1,Y7);
bb7=round(bb7/2^p);
Y8=awgn(y,-10); %信噪比-10
Y8=round(Y8*2^p); %16位归一化
bb8=filter(b,1,Y8);
bb8=round(bb8/2^p);
%bb=filter(b,1,rrr);
%bb=Y.*Hd;
YX=abs(fft(y));
YY=abs(fft(Y));
t=0:1/fs:dT-1/fs;
BB=abs(fft(bb));
YY=abs(fft(Y));
BB=abs(fft(bb));
YY1=abs(fft(Y1));
BB1=abs(fft(bb1));
YY2=abs(fft(Y2));
BB2=abs(fft(bb2));
YY3=abs(fft(Y3));
BB3=abs(fft(bb3));
YY4=abs(fft(Y4));
BB4=abs(fft(bb4));
YY5=abs(fft(Y5));
BB5=abs(fft(bb5));
YY6=abs(fft(Y6));
BB6=abs(fft(bb6));
YY7=abs(fft(Y7));
BB7=abs(fft(bb7));
YY8=abs(fft(Y8));
BB8=abs(fft(bb8));
%————————————————————————————————————————
set(Hd, 'Arithmetic', 'double');
set(Hd, 'Arithmetic', 'double');
set(Hd, 'Arithmetic', 'double');
set(Hd, 'Arithmetic', 'double');
set(Hd, 'Arithmetic', 'double');
%————————————————————————————————————————
figure(1)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY)
subplot(3,1,3);plot(BB)
figure(2)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY1)
subplot(3,1,3);plot(BB1)
figure(3)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY2)
subplot(3,1,3);plot(BB2)
figure(4)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY3)
subplot(3,1,3);plot(BB3)
figure(5)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY4)
subplot(3,1,3);plot(BB4)
figure(6)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY5)
subplot(3,1,3);plot(BB5)
figure(7)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY6)
subplot(3,1,3);plot(BB6)
figure(8)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY7)
subplot(3,1,3);plot(BB7)
figure(9)
subplot(3,1,1);plot(YX)
subplot(3,1,2);plot(YY8)
subplot(3,1,3);plot(BB8)
%freqz(Hd)
% [EOF]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -