clear,close,clc, Fs = 8000; fc = 400; n = 30; % b = ones(1,n-1); b=[1 zeros(1,n-1) -1]; qb=b/max(abs(b)) qb=round(qb*(2^12-1)) f1 = 800; f2 = 1600; f3 = 200; n=0:255; x=zeros(1,length(n)); x = sin(2*pi*f1*n/Fs) + sin(2*pi*f2*n/Fs) + sin(2*pi*f3*n/Fs); y = filter(qb, 1, x); figure(1); subplot(2,1,1); %plot(t, x); plot(n, x); title('输入波形'); xlabel('时间 (s)'); ylabel('幅值'); subplot(2,1,2); % plot(t, y); plot(n, y); title('输出波形'); xlabel('时间 (s)'); ylabel('幅值'); figure(2); freqz(qb, 1); xk=fft(x); m=linspace(0,Fs,length(x)); figure(3) subplot(211) plot(m,abs(xk)) yn=conv(x,b); yk=fft(yn,length(x)); subplot(212) plot(m,abs(yk)) x=floor(x*8191) fid = fopen('C:\ti\myprojects\2020101097_2\work3.da t','w'); fprintf(fid,'1651 2 0x8000 0 256\n'); fprintf(fid,'%d\n',x(1:256)); fclose(fid);的基本原理
时间: 2024-04-29 16:20:15 浏览: 140
CLC-CCIE Service Provider v5.0-Practice Lab v1.0.pdf
这段代码实现了一个数字滤波器的设计和实现,其中包括了以下基本原理:
1. 梳状滤波器的设计:在代码中,使用了一个差分器的结构设计了一个梳状滤波器,其中b=[1 zeros(1,n-1) -1]表示滤波器的系数,通过对系数进行归一化和量化处理,得到了qb系数。
2. 输入信号的产生:代码中使用了三个正弦波信号产生了一个复合信号,其中f1、f2、f3为正弦波的频率,Fs为采样率,n为采样点数,通过对三个正弦波信号进行加和得到了复合信号x。
3. 滤波器的应用:代码中使用了MATLAB中的filter函数,将梳状滤波器的系数qb和输入信号x作为参数传入函数中,得到了滤波后的输出信号y。
4. 输出信号的保存:代码中通过使用MATLAB中的文件操作函数,将滤波后的输出信号进行量化处理后保存到一个二进制数据文件中。
5. 输出结果的可视化:代码中使用MATLAB中的plot函数和freqz函数,对输入信号、输出信号和滤波器频率响应进行了可视化显示。
综上所述,这段代码实现了一个数字滤波器的设计、输入信号的产生、滤波器的应用、输出信号的保存和输出结果的可视化等基本原理。
阅读全文