简单说说卷积的作用
卷积是一个耳熟能详的的词,自从我开始学习信号与系统以后,就一直没有离开过它,不过只是把它当成一个运算符号来看待。
不过闲着的时候,也会去想,卷积到底有什么作用。
提供一种方便的频域处理方式
时域卷积频域相乘
这条法则想必大家都知道,作用非常大,可以轻松的对信号的频域做处理
简单的应用就是频域滤波
F(x)代表输入信号,H(x)代表滤波函数,g(x)代表滤波(输出)信号。
转换到时域则是
以下是一个声音信号处理的例子,给matlab自带鸟叫声加了一个低通滤波器。
效果如下:
滤波前:
滤波后:
代码如下:
1 2 3 4 5 6 7 8 |
% 主函数 close all; load chirp; Hd = getFilter; % 使用Filter Builder设计的FIR X = filter(Hd,y); % 等同于conv(y,Hd.Numerator)
DrawFFT(y,Fs); % 自定义函数用于画频谱 DrawFFT(X,Fs); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function Hd = getFilter %GETFILTER Returns a discrete-time filter object.
% MATLAB Code % Generated by MATLAB(R) 9.4 and DSP System Toolbox 9.6. % Generated on: 11-Aug-2018 21:15:57
Fpass = 2500; % Passband Frequency Fstop = 3000; % Stopband Frequency Apass = 1; % Passband Ripple (dB) Astop = 60; % Stopband Attenuation (dB) Fs = 8192; % Sampling Frequency
h = fdesign.lowpass('fp,fst,ap,ast', Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'equiripple', ... 'MinOrder', 'any', ... 'StopbandShape', 'flat'); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function [ ] = DrawFFT( x, Fs ) % DrawFFT 对输入信号进行快速傅里叶变换 % 输入参数:x :输入信号; Fs:采样频率 % by Yang Xiaokang , 2016-02
L = length(x); NFFT = 2^nextpow2(L); %确定FFT变换的长度 y = fft(x, NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2+1); %频率向量 figure; plot(f, 2*abs(y(1:NFFT/2+1))); %绘制频域图像 title('幅度谱'); xlabel('Frequency (Hz)'); ylabel('|y(f)|'); end
% 作者:TaylorSe % 链接:https://www.zhihu.com/question/46038488/answer/144244073 % 来源:知乎 % 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |
上一篇: 杭电计算机组成原理课程设计-实验九-MIPS汇编器与模拟器实验
下一篇: 手动实现卷积操作