Scilab 处理声音数据(补充)

最后更新于:2022-04-01 07:31:57

### mapsound  Scilab 中有一个函数可以绘制声音频谱随时间变化的图像。采用的算法是分块进行FFT求得每一时间段内的频谱。唯一一点缺陷是窗函数无法选择,只能是矩形窗。算是个简化版本的短时傅里叶变换。   mapsound (w,dt,fmin,fmax,simpl,rate) 其中 w 是声音数据 Dt 是时窗的宽度,单位是秒  Fmin 和Fmax 限定了绘制的图像的y轴的最小和最大值,单位 Hz。 Simpl 表示在计算时将多少个相邻数据点合成一个数据点计算。 Rate 是信号的采样率   以上各参数的默认值如下: Dt: 0.1 Fmin: 100 Fmax: 1500 Simpl :1 Rate: 22050 ~~~ // At first we create 0.5 seconds of sound parameters. t=soundsec(0.5); // Then we generate the sound. s=sin(440*t)+sin(220*t)/2+sin(880*t)/2; [nr,nc]=size(t); s(nc/2:nc)=sin(330*t(nc/2:nc)); mapsound(s,0.1,100,500,1); ~~~ ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a4234262b38.jpg) 原始声音数据的波形如下: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-24_56a42342714ac.jpg) 上面例子中用到了另一个函数soundsec,这个函数的作用很简单,生成一个 n 秒声音数据所需的时间向量。   t=soundsec(n [,rate])   N 是要生成的声音数据的时长 Rate 采样率
';