龙空技术网

重要的基础信号(matlab+python)

平凡的兵 242

前言:

眼前各位老铁们对“matlab音频信号处理代码文党”大致比较关心,看官们都想要了解一些“matlab音频信号处理代码文党”的相关资讯。那么小编同时在网摘上网罗了一些关于“matlab音频信号处理代码文党””的相关资讯,希望你们能喜欢,各位老铁们快快来了解一下吧!

数字信号处理系列文章,理论+实践,持续更新,欢迎关注@平凡的兵 一起共成长。

本文主要讲解信号处理中基础信号,需要熟知于心,这些都是根基,我们往往容易忽略。

单位冲击信号

这个信号是数字信号处理的灵魂信号,matlab和python代码均附上。

function main() [x,n] = impseq(0,-10,10);stem(n,x);xlabel('n');ylabel('x(n)')function [x,n] = impseq(n0,n1,n2)% Generates x(n) = delta(n-n0); n1 <= n <= n2% ----------------------------------------------% [x,n] = impseq(n0,n1,n2)%n = linspace(n1,n2,n2-n1+1);x = [(n-n0) == 0];
import numpy as npimport matplotlib.pyplot as pltdef impseq(n0,n1,n2):    ''' Generates x(n) = delta(n-n0); n1 <= n <= n2     ----------------------------------------------        (x,n) = impseq(n0,n1,n2)    '''    n = np.linspace(n1, n2, n2-n1+1)    x = [(n-n0) == 0]    return x,nif __name__ == '__main__':   (x,n) = impseq(0, -10, 10)   plt.figure()   plt.stem(n,x[0])   plt.savefig('impseq.jpg')
单位阶跃信号

它等效的物理模型是开关的闭合。

function main() [x,n] = stepseq(0,-10,10);stem(n,x);xlabel('n');ylabel('x(n)');function [x,n] = stepseq(n0,n1,n2)% Generates x(n) = u(n-n0); n1 <= n <= n2% ------------------------------------------% [x,n] = stepseq(n0,n1,n2)%n = linspace(n1,n2,n2-n1+1);x = [(n-n0) >= 0];

实指数信号

实指数信号可以描述很多物理现象,比如生物的自然繁衍、银行存款的本金利息、原子核的裂变,都具有指数增长(a>1)的特性。声音在大气中传播、RC电路的响应,都是按照指数衰减(a<1)的特性变化。

   n = np.linspace(0, 10, 11)   a = 0.5   x = np.power(a, n)   plt.xlabel("n")   plt.ylabel("x(n)")   plt.title('x(n)=0.5^n')   plt.xticks(n)   plt.stem(n,x)   plt.savefig('power_small.jpg')
复指数信号

实指数信号的拓展。注意复数的实部、虚部和幅值。

具体示例

n = np.linspace(-10, 10, 21)x = np.exp((-0.1+0.3*1j)*n)plt.xticks(n)plt.subplots_adjust(wspace=None, hspace=0.45)plt.subplot(2,2,1)plt.title('Real part')plt.ylabel('Amptitude')plt.stem(n,x.real)plt.subplot(2,2,2)plt.title('Imag part')plt.ylabel('Amptitude')plt.stem(n,x.imag)plt.subplot(2,2,3)plt.title('Magnitude part')plt.ylabel('Magnitude')plt.stem(n,abs(x))plt.subplot(2,2,4)plt.title('Phase part')plt.ylabel('Degree')plt.stem(n,np.angle(x)*180/pi)plt.tight_layout()plt.savefig('complex_exp.jpg')
正弦信号

A表示信号的幅度,w为数字频率,为初始相位。

生活中很多物理现象都可以用正弦信号来描述,例如交流电信号、通信载波信号、音频信号。

正弦信号的复数形式,即复正弦信号 ,该信号不仅是傅里叶变换时的基信号,还是线性时不变系统的特征信号。

    n = np.linspace(0,100,101);        # 时间向量    x = 0.7*sin(2*pi/10*n);     # 信号    plt.xlabel("n")    plt.title('x = 0.7*sin(2*pi/10*n)')    plt.stem(n,x)    plt.tight_layout()    plt.savefig('sin.jpg')

参考资料

[1] 深入浅出数字信号处理,江志红

[2] Digital signal processing using matlab, Fourth Edition, Vinay K. Ingle, John G. Proakis

标签: #matlab音频信号处理代码文党