对数量化器--MATLAB

在现在数字控制中,组件间通常是通过通信信道进行信息传输。信号量化源于实际信号传输的带宽限制。为了保证能在有限的带宽内进行正常信息传输,需要使用量化技术来降低通信速率。现在的量化包括均匀量化,对数量化,磁滞量化等。有兴趣的朋友可以去网上或论文中查找详细资料,我不是专门研究这个的,也不是很了解。只是刚好用到了对数量化器,就和大家分享一下。

 截了一张图,对数量化器,当然现在还有一些改进的,效果更好的,但不在这里讨论研究。

 对于上面的公式,简要说明一下,其中 q 是量化值。\rho是量化密度,量化密度越大,量化越精确。\delta是量化器的精确参数,也是对数量化器的扇区边界。\zeta0是初始量化参数,i可以看作量化级数。当\rho确定了,扇区边界也就确定了,量化值被限定在斜率为1+\delta和1-\delta的两条线界范围内。

接下来就是上代码

首先根据你需要量化的信息的大致范围来预先定义量化级数 i 和初始量化参数 \zeta0 的范围:即量化器的输入信号 最大也不会超过设定的最大值\rho ^i*\zeta0,合适的参数可以让量化效果更精确一些。然后每个量化级数对应一个量化值,验证每个量化判断条件,开始循环直至找出满足条件的量化级别和量化值,break跳出循环,减少语句执行次数。

a=input('输入一个数x:');
zeta0=5;delta=0.11;rho=0.8;
for i=20:-1:-20
    zeta=rho^i*zeta0;
    if a>0 && a>rho^i*zeta0/(1+delta) && a<=rho^i*zeta0/(1-delta)
        Q=zeta;
        break
    end
    if a<0 && -a>rho^i*zeta0/(1+delta) && -a<=rho^i*zeta0/(1-delta)
        Q=-zeta;
        break
    end
    if a==0
        zeta=0;
        Q=zeta;
        break
    end
end
fprintf('%f',Q)

这是单个的测试,如果想有更直观的对比,可以选择用一个函数来量化,常用的就是正弦余弦函数了,这里我选用一个正弦函数 y=3*sin(2*t)。

zeta0=1;delta=0.11;rho=0.8;
step_size=0.01;            %步长
simulationtime=3;         %仿真总时长
n=simulationtime/step_size; %循环次数
t=zeros(1,n);               %仿真时间点矩阵
Qy=zeros(1,n);              %存放量化的y值
for i=1:n
    t(i)=t(1)+(i-1)*step_size;
    y(i)=3*sin(2*t(i));
    for num=20:-1:-20      %量化级数20~-20,逐个循环找到适应量化值
        zeta=rho^num*zeta0;%量化值
        if y(i)>0 & y(i)>rho^num*zeta0/(1+delta) & y(i)<=rho^num*zeta0/(1-delta)
            Q=zeta;
            break
        end
        if y(i)<0 & -y(i)>rho^num*zeta0/(1+delta) & -y(i)<=rho^num*zeta0/(1-delta)
            Q=-zeta;
            break
        end
        if y(i)==0
            zeta=0;
            Q=zeta;
            break
        end
    end
    Qy(i)=Q;
end
set(0,'defaultfigurecolor','w')%设置白色背景
plot(t,y)
hold on
plot(t,Qy)

 下面是仿真结果

 量化密度\rho越大,选取合适的初始量化参数\zeta0,可以发现量化效果还是不错的。

本文到这里就结束了,量化器也是刚接触,如有错误,欢迎指出,或者有更好的见解(包括代码)也可以评论区留言。

 

  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值