matlab 音频均匀量化,matlab对音频均匀量化

首先,必须深刻理解quantier这个函数的应用,它的基本思想是将浮点数转化为定点,中间是二进制的过度过程。

对于quantizer后面两个参数[a,b],a代表整数的(二进制表示)字长,b代表小数(二进制表示)的幂长。

转载下面的例子便于理解:

浮点转换为定点的过程在Matlab中称为量化,使用quantizer和quantize两个函数完成。

(1)、quantizer用于定义数据的量化属性

(2)、quantize则按照quantizer定义的量化属性量化浮点数据。

下面举一个例子:

x = [3.5 1.5 6 20.8 -128.25 127.75];

qpath = quantizer('fixed','round','saturate',[10,2]);

fix_x = quantize(qpath,x);

运行后fix_x结果为:

fix_x =

3.5000    1.5000    6.0000   20.7500 -128.0000  127.7500

其中-128.25溢出了,这里设置溢出后为饱和输出,所以为-128。

具体关于quantizer和quantize函数的使用说明请参考Matlab的help文件

好了,下面对于均匀量化过程

syms sample_point;

syms quantizion_bits;

syms mmid_riser;

sample_point = 200;

quantizion_bits = 4;

[y,fs,nbits]=wavread('E:\大二下\通信原理\实验五\road.wav',sample_point);

sample = y(1:sample_point);

q_riser = quantizer('fixed','round','saturate',[9,quantizion_bits]);

q_tread = quantizer('fixed','floor','saturate',[9,quantizion_bits]); %这里特别注意不能用round,请自己思考为什么

mid_riser = quantize(q_riser,sample);%对采样信号进行量化

for i=1:sample_point

mid_riser(i) = mid_riser(i) + power(1/2,quantizion_bits)/2;

%mid_riser(i) = 0.1;

end

mid_tread = quantize(q_tread,sample);%对采样信号进行量化

subplot(1,2,1); plot(n,sample,'r',n,mid_riser,'b'); title('Mid-Riser');

legend('original singal','quantized at 4 bits');

grid;

subplot(1,2,2); plot(n,sample,'r',n,mid_tread,'b'); title('Mid-Tread');

legend('original singal','quantized at 4 bits');

grid;

0818b9ca8b590ca3270a3433284dd417.png


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部