Matlab实现均匀量化
Matlab实现均匀量化
首先读入一个音频文件的前200个点,如果音频通道大于1则只取一个通道,滤掉其余的
得到音频文件的最大值和最小值,最大值和最小值的差除以2的4次方即16得到量化电平的端点间隔。
从最小值开始每次加量化电平端点间隔进行量化,最大值之上补一个边界,方便判断。
- Mid Riserd 量化方法
遍历量化区间,如满足某一区间,则取其区间的中点进行量化,并进行下一个点 - Mid Tread量化方法
遍历量化电平正负半个端点间隔,如满足该区间,则取该量化端点
输出两者和原来信号进行对比分析。
实现效果
运行效果图:
红色的是原始声音信号的波形
蓝色的是4 bits量化后的波形


代码实现
clear all
clc
% 量化位数
n_bits = 4;
% 读入原始文件的左声道前200个点
WAV = wavread('road.wav', 200);
WAV = WAV( : ,1);
figure;
plot(WAV, 'r');hold on
% 设置量化电平参数
MAX_VALUE = max(WAV);
MIN_VALUE = min(WAV);
MID_VALUE = (MAX_VALUE - MIN_VALUE) / 2^n_bits;
for i = 1 : 2^n_bits + 1
m(i) = MIN_VALUE + MID_VALUE * (i - 1);
end
%% Mid Riser的量化方法
WAV1 = WAV;
for i = 1 : 200
for j = 1 : 2^n_bits
% 取分界点的中点
if WAV1(i) >= m(j) && WAV1(i) <= m(j+1)
WAV1(i) = (m(j) + m(j+1)) / 2;
break
end
end
end
plot(WAV1, 'b');hold off % 输出并对比
title('Mid Riser');
%% Mid Tread的量化方法
figure;
plot(WAV, 'r');hold on
WAV2 = WAV;
for i = 1 : 200
for j = 1 : 2^n_bits
% 取某一分界点
if WAV2(i) >= (m(j) - 1/2 * MID_VALUE) && WAV2(i) <= (m(j) + 1/2 * MID_VALUE)
WAV2(i) = m(j);
break
end
end
end
plot(WAV2, 'b');hold off % 输出并对比
title('Mid Tread');
Matlab实现均匀量化的更多相关文章
- 在matlab中对hsv进行均匀量化和非均匀量化
首先,进行非均匀量化,H,S,V三通道分别量化为16,4,4级,返回一个向量.量化依据如下表: function vec = getHsvHist(Image) [M,N,O] = size(Imag ...
- 数字图像处理笔记与体会(一)——matlab编程基础
最近开始学习数字图像处理,使用matlab实现,下面我就来记录笔记和体会,一方面是给大家提供参考,另一方面是防止我忘记了. 复习一下: 1.数字图像是用一个数字矩阵来表示的,数字阵列中的每个数字,表示 ...
- Matlab图像处理基础知识
Matlab图像处理基础知识 Matlab的图片以矩阵的形式存储,矩阵的行列值为图片的行列的色彩值. 1图像表达方式: 像素索引 图像被视为离散单元.如使用I(2,2)可以获取第二行第二列的像素值 空 ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab slice方法和包络法绘制三维立体图
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab 高斯_拉普拉斯滤波器处理医学图像
前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...
- MATLAB中绘制质点轨迹动图并保存成GIF
工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...
- linux下配置matlab运行环境(MCR)
在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...
- EMD分析 Matlab 精华总结 附开源工具箱(全)
前言: 本贴写于2016年12与15日,UK.最近在学习EMD(Empirical Mode Decomposition)和HHT(Hilbert-Huang Transform)多分辨信号处理,FQ ...
随机推荐
- WWF3XOML方式创建和启动工作流 <第十篇>
一.XOML使用工作流的好处 通过Xoml方式使用工作流的好处在于,它能够不重新启动程序的情况下,仅仅通过配置xoml就能够实现改变工作流,非常灵活. 创建一个WinForm程序如下: 代码如下: n ...
- oracle11g空表不能导出记录
select 'alter table '||table_name||' allocate extent(size 64k);' from tabs t where not exists (selec ...
- Android IOS WebRTC 音视频开发总结(三七)-- 台湾help
本文主要介绍上周跟帮一个台湾程序员解决RTC的故事,文章来自博客园RTC.Blacker(更多信息详见www.rtc.help),支持原创,转载请说明出处. 故事是这样的:一个台湾刚毕业的程序员在公司 ...
- CentOS6.5 python 2.6升级到2.7
在CentOS6.5下,将自带的python2.6.6升级到python2.7.3,解决方法如下: 下载python2.7.3包,并解压缩,输入命令:#wget http://python.org/f ...
- JDBC数据库连接(MySQL为例)
1.什么是JDBC?有什么作用? Java Data Base Connectivity Java数据库连接协议 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问. 他提 ...
- 详解Oracle临时表的几种用法及意义
Oracle临时表可以说是提高数据库处理性能的好方法,在没有必要存储时,只存储在Oracle临时表空间中.希望本文能对大家有所帮助. 1 .前言 Oracle Logo 目前所有使用 Oracle 作 ...
- win7 C# winForm编程 savefiledialog 不能弹出保存窗体
public void ResMsg() { while (isRecMsg) { //准备一个数组 准备接收 ...
- java实现的MySQL自动备份和还原(struts2+Hibernate)---兼容 window+Linux
相信很多朋友都经历过数据库出问题的情况,我也同样(见我的上一篇博文:phpmyadmin误删表后的恢复过程(心惊胆跳啊) ).如果数据很大或者很重要,那么恢复起来是相当困难的,所以我们在做一个相对 ...
- Pull解析xml
没有写抛出的异常,例子是含有多个Person对象persons.xml(此片内容未写写入的代码),包含id,name,email,address标签,Person对象含有id,name,email,a ...
- svn的使用!!!
1.SVN:subversion(子级源代码版本控制管理软件) 2.SVN的作用 (1)避免开发同一项目不会出现代码覆盖. (2)同一文件可以创建许多不同的版本,并可以随时查看不同版本的内容. (3) ...