⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fir5116.m

📁 16阶带通fir滤波器程序
💻 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 + -