speex_echo_cancellation中收到的近端信号,首先进行了去直流和预加重的操作。

近端信号预处理

去直流

/* Apply a notch filter to make sure DC doesn't end up causing problems */

filter_dc_notch16(in + chan,

st->notch_radius,

st->input + chan*st->frame_size,

st->frame_size,

st->notch_mem + 2*chan,

C);

其中in中保存的是原始的近端信号,st->input中保存的是去直流之后的信号。

利用matlab进行频域分析,

去直流频域分析

预加重操作

/* Copy input data to buffer and apply pre-emphasis */

/* Copy input data to buffer */

for (i = 0; i < st->frame_size; i++)

{

spx_word32_t tmp32;

/* FIXME: This core has changed a bit, need to merge properly */

tmp32 = SUB32(EXTEND32(st->input[chan*st->frame_size+i]),

EXTEND32(MULT16_16_P15(st->preemph, st->memD[chan])));

#ifdef FIXED_POINT

if (tmp32 > 32767)

{

tmp32 = 32767;

if (st->saturated == 0)

st->saturated = 1;

}

if (tmp32 < -32767)

{

tmp32 = -32767;

if (st->saturated == 0)

st->saturated = 1;

}

#endif

st->memD[chan] = st->input[chan*st->frame_size+i];

st->input[chan*st->frame_size+i] = EXTRACT16(tmp32);

}

用matlab进行频谱分析,

预加重之后频谱分析

matlab代码如下:

clear

Fs = 48000; % 采样频率

T = 1/Fs; % 采样时间

L = 480; % 信号长度

t = (0:L-1)*T; % 时间

y = textread('fp_TIME_near_001.txt');

y2 = textread('fp_TIME_near002_after_filter_dc.txt');

y3 = textread('fp_TIME_near003_after_pre-emphasis.txt');

N = 2^nextpow2(L); %采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0

% y

Y = fft(y,N)/N*2; %除以N乘以2才是真实幅值,N越大,幅值精度越高

f = Fs/N*(0:1:N-1); %频率

A = abs(Y); %幅值

P = angle(Y); %相值

% y2

Y2 = fft(y2,N)/N*2; %除以N乘以2才是真实幅值,N越大,幅值精度越高

f2 = Fs/N*(0:1:N-1); %频率

A2 = abs(Y2); %幅值

P2 = angle(Y2); %相值

% y3

Y3 = fft(y3,N)/N*2; %除以N乘以2才是真实幅值,N越大,幅值精度越高

f3 = Fs/N*(0:1:N-1); %频率

A3 = abs(Y3); %幅值

P3 = angle(Y3); %相值

figure;

subplot(411);

%plot(t, y, 'k')

hold on

plot(t, y2, 'r')

hold on

plot(t, y3, 'b')

legend('2: 去直流后','3: 预加重后') %为图片添加图例

title('时域信号')

xlabel('时间(s)')

subplot(412);

%plot(f(1:N/2), A(1:N/2),'k'); %函数fft返回值的数据结构具有对称性,因此我们只取前一半

hold on

plot(f2(1:N/2), A2(1:N/2), 'r');

hold on

plot(f3(1:N/2), A3(1:N/2), 'b');

title('幅值频谱(前半部分)')

xlabel('频率(Hz)')

ylabel('幅值')

subplot(413);

%plot(f(1:10), A(1:10),'k');

hold on

plot(f2(1:20), A2(1:20), 'r');

hold on

plot(f3(1:20), A3(1:20), 'b');

title('幅值频谱(放大最前部分)')

xlabel('频率(Hz)')

ylabel('幅值')

subplot(414);

%plot(f(1:10), A(1:10),'k');

hold on

plot(f2(21:240), A2(21:240), 'r');

hold on

plot(f3(21:240), A3(21:240), 'b');

title('幅值频谱(放大最后部分)')

xlabel('频率(Hz)')

ylabel('幅值')

matlab 信号去直流,Speex中的近端信号去直流和预加重操作相关推荐

  1. matlab中怎么仿真出bumps信号,显示仿真过程中生成的信号

    配置属性 Configuration Properties 对话框控制有关示波器画面的各种属性.从示波器菜单中,选择 View > Configuration Properties.Main O ...

  2. java 发送信号_java – 在Windows中发送任意信号?

    如果你想要的是明确地/编程性地杀死任何类型的程序/进程,在SysInternals的pstools中有一个名为"pskill"的小工具,就像Unix"kill" ...

  3. 利用matlab实现DMD动态模态分解(在一维信号或二维流场矢量中的应用)

    利用matlab实现DMD动态模态分解(在一维信号或二维流场矢量中的应用) 0 前言 0.1 特征根的计算与含义 1 DMD的基本思路 2 一维DMD算法 3 二维DMD算法 4 总结 (2020年9 ...

  4. matlab频域滤波处理,手动滤波,图像去网格背景:频域中手动选择目标区域进行滤波,滤掉噪声,灵活地达到理想的效果。

    目录 一.原理简介 二.现有方法 三.代码实现 四.测试结果图 一.原理简介 主要思路为:通过傅里叶变换,将图像显示在频率域中,通过观察频谱图,如果了解频谱图与原图之间的关联,可以较为容易地发现噪声在 ...

  5. 数字信号处理--基于MATLAB的小波去噪算法--小波变换在信号降噪和压缩中的应用

    小波分析的重要应用之一就是用于信号消噪,首先简要地说明一下小波变换实现信号消噪的基本原理. 一.基本原理 含噪的一维信号模型可以表示如下 式中s(k)为含噪信号,f(k)为有用信号,e(k)为噪声信号 ...

  6. matlab离散方波信号,MATLAB - 在ODE15s函数中生成方波信号?(MATLAB - Generate square signal in ODE15s function?)...

    MATLAB - 在ODE15s函数中生成方波信号?(MATLAB - Generate square signal in ODE15s function?) 我试图从函数内部生成一个方形信号,通过O ...

  7. matlab求周期信号频谱,Matlab在周期信号分解及频谱中的应用

    兰兰 Q 二 竺 CN11 2034/T 实 验 技 术 与 管 理 Experimenta1 Technology and M anagement 第 33卷 第 5期 2016年 5月 Vo1.3 ...

  8. matlab中的方波信号图片_如何在MATLAB R2019b中导出simulink的各种图片

    大家好,这里是玉树的MATLAB小知识讲堂. 今天给大家带来的是,如何在高版本MATLAB(R2018以上)的simulink中,导出我们想要的高清图片. 在做课题作业时,我发现网络中关于导出simu ...

  9. 《MATLAB在语音信号分析与合成中的应用》下载地址

    MATLAB在语音信号分析与合成中的应用_宋知用编著_北京航空航天大学出版社_2013.11_P386_完整版 PDF电子书下载 带书签目录_.zip_免费高速下载|百度网盘-分享无限制  (网盘) ...

  10. matlab中对正弦信号采样,正弦信号抽样的实验报告(共9篇).doc

    正弦信号抽样的实验报告(共9篇) 正弦信号抽样的实验报告(共9篇) 信号抽样实验报告 大连理工大学实验报告 学院(系):专业:班级: 姓 名: 学号: 组: ___ 实验时间: 实验室: 实验台: 指 ...

最新文章

  1. Linux文本界面设置网络,fedora17下通过文本界面配置网络
  2. ubuntu 21.04安装OBS Studio录屏软件
  3. css判断不同分辨率显示不同宽度布局实现自适应宽度
  4. jax rs mysql_Jersey / JAX-RS ExceptionMapper MySQL
  5. 对话诺奖得主:科学离不开国际合作
  6. code-server安装使用
  7. 写高性能 Web 应用程序的 10 个技巧 转自微软资料 .
  8. 中公教育python培训讲师面试题_中公教育面试经验
  9. linux 开山(尚硅谷)--听课笔记-
  10. 电脑没有声音怎么安装声卡驱动?驱动人生声卡驱动安装失败原因
  11. Android 音频系统
  12. python保存excel文件列宽自适应解决方案
  13. 学生用计算机的感叹号在哪,电脑网络黄三角感叹号怎么解决
  14. 胡适致迷茫大学生:成不在一时,功必不唐捐
  15. 关键字 surper 和 this
  16. C++ 读取TXT文件中的数据 每一行空格符相隔的数据单独取出
  17. Halcon连接大恒相机
  18. 2018 Android面经分享(京东,百度,陌陌,58到家等知名公司)
  19. 337调查之「普遍排除令」简介及2018年度典型案例探讨
  20. 设计模式是什么鬼3(原型)

热门文章

  1. JXLS for循环
  2. 叉车式AGV 时间窗问题
  3. Excel 单元格 自定义格式详解
  4. 拼多多api接口php算法,php封装的拼多多开放平台API类库
  5. 采用WPF开发第二版OFD阅读器
  6. 安卓kotlin教程
  7. VScode怎么查看python源码
  8. 百度地图、腾讯地图、高德地图经纬度转换
  9. 学习Spring之前要先学习什么?
  10. spring学习-01编译spring5.0源码(亲测可用)