我正在实现一个对数量化器,其定义如下:
根据这些表达式计算不同的参数:
有关量化器的更多信息,请参阅本文:具有输入量化的不确定非线性系统的自适应反步控制。
为了编写一个函数以在 MATLAB 中实现它,我编写了以下代码:
function q_u = logarithmic_hysteretic_quantizer(u,step,u_min)
u_o = u_min*(1+step);
p = (1-step)/(1+step);
if u < 0
q_u = -logarithmic_hysteretic_quantizer(-u,step,u_min);
elseif ( (u >= 0) && (u <= u_o/(1+step)) )
q_u = 0;
else
i = 1;
while (1)
u_i = p^(1-i) * u_o;
if ( (u > u_i/(1+step)) && (u <= u_i/(1-step)) )
q_u = u_i;
break;
end
i = i + 1;
end
end
end
现在,我的问题是尽可能地改进代码。例如,while(1)编码不同量化级别的循环应该消失并被替换。任何想法将不胜感激。