求助|simulink仿真对比均匀量化与非均匀量化

最近的项目关于ADC的非线性误差分析,导师要求先用simulink仿真对比均匀量化和非均匀量化,之前没有接触过simulink和ADC,于是通过学习和查阅,我做了这样的模型:

最上方是通过量化器模拟均匀量化,中间用MATLAB Function代码写非均匀量化的算法,算法如下:

function y = nonlinear_adc_quantizer(u)
    % 非线性量化阈值和对应的量化级别
    % 假设输入信号的范围是[-1, 1]
   
    % 量化区间: [32个量化级别,对应于一个5位ADC]
    thresholds = linspace(-1, 1, 32); % 理想情况下应为均匀分布的阈值

    % 引入非线性误差:人为打乱一些阈值的位置
    % 这里简单地将中间部分的阈值密度加大,其他部分减小
    % 0.1是调节非线性误差的因子,可自定义,决定阈值偏移,因子越大误差越明显
    nonlinearity = 0.1 * sin(2 * pi * thresholds); % 非线性误差函数
    thresholds = thresholds + nonlinearity;

    % 量化级别: 这里简单地使用阈值的中点作为量化级别
    levels = (thresholds(1:end-1) + thresholds(2:end)) / 2;

    % 初始化输出向量
    y = zeros(size(u));
    
    % 量化过程
    for i = 1:length(thresholds)-1
        indices = (u >= thresholds(i)) & (u < thresholds(i+1));
        y(indices) = levels(i);
    end
    
    % 处理最大值的边界情况
    y(u >= thresholds(end)) = levels(end);
end

我希望的结果是仿出如下图像:

但是实际scope的图像,非均匀量化的“阶梯”之间有“斜坡”,如下图:

我后面用MATLAB Function也写了均匀量化的逻辑算法,输出后均匀量化的图像也有“斜坡”,我重新思考演算了代码逻辑,应该不是代码的问题,请问大家是否有遇到过类似问题,应该如何改进?

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值