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