欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单说说卷积的作用

程序员文章站 2022-07-06 11:07:34
...

卷积是一个耳熟能详的的词,自从我开始学习信号与系统以后,就一直没有离开过它,不过只是把它当成一个运算符号来看待。

不过闲着的时候,也会去想,卷积到底有什么作用。

简单说说卷积的作用

提供一种方便的频域处理方式

时域卷积频域相乘

这条法则想必大家都知道,作用非常大,可以轻松的对信号的频域做处理

简单的应用就是频域滤波

简单说说卷积的作用

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

% 来源:知乎

% 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


简单说说卷积的作用

相关标签: 卷积