matlab均值量化函数_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');

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值