delsig工具包中遇到的棘手问题?
录入:edatop.com 阅读:
用delsig工具包做sigma-delta的系统仿真,出现了一些问题,搞不明白,发个贴大家都来讨论一下。
1.在delta-sigma数据转换器中的讲解设计噪声函数的时候一般用工具包里面的synthesizeNTF函数,但我看了一下,好像里面的量化器只有默认的一位,如果我要做多位的量化器仿真,不是没着了吗?还好,后面一个函数clans据说能够进行多位仿真,于是我写了一下程序:
order=3;
OSR=64;
opt=1;
Q=3;
%H=synthesizeNTF(order,OSR,opt); 注:这行如果用来替代下面一行,是可以用的
H=clans(order,OSR,Q,0.95,opt);
figure(1);
plotPZ(H);
f=linspace(0,0.5,1000);
z=exp(2*pi*f);
figure(2);
plot(f,dbv(evalTF(H,z)));
sigma_H=dbv(rmsGain(H,0,0.5/OSR))
用clans仿真,调用的时候出现了一个错误,如下:
? Error using ==> fmincon
FMINCON cannot continue because user supplied nonlinear constraint function
failed with the following error:
Error using ==> rfinputs
Not supported for models with complex data.
Error in ==> clans6 at 35
x = fmincon(@(x)dsclansObj6a(x,order,OSR,Q,rmax,Hz),x,...
Error in ==> clans at 19
NTF=clans6(order,OSR,Q,rmax,opt);
Error in ==> NTF_test at 6
H=clans(order,OSR,Q,0.95,opt);
把fmincon函数调用的地方贴出来:
% Run the optimizer
options = optimset('TolX',1e-6, 'TolFun',1e-6, 'TolCon',1e-6, 'MaxIter',1000 );
options = optimset(options,'Display','off');
options = optimset(options,'Diagnostics','off');
options = optimset(options,'LargeScale','off');
x = fmincon(@(x)dsclansObj6a(x,order,OSR,Q,rmax,Hz),x,...
[],[],[],[],[],[],@(x)dsclansObj6b(x,order,OSR,Q,rmax,Hz),options);
NTF = dsclansNTF(x,order,rmax,Hz);
return
function f=dsclansObj6a(x,order,OSR,Q,rmax,Hz)
% Objective function for clans; Optimization Toolbox version >= 6
% f is the magnitude of H at the band-edge
H = dsclansNTF(x,order,rmax,Hz);
f = abs(evalTF(H,exp(1i*pi/OSR)));
return
function [g,g_eq]=dsclansObj6b(x,order,OSR,Q,rmax,Hz)
% Constraint function for clans; Optimization Toolbox version >= 6
% g =||h||_1 - Q
H = dsclansNTF(x,order,rmax,Hz);
g = sum(abs(impulse(H,100))) -1 - Q;
g_eq = [];
return
有没有知道这是什么问题啊?
2.还有一个小问题,那个SDtool中有个ADC-DAC模块,里面有个比较器的个数,怎么将其余量化器的位数联系起来啊?
1.在delta-sigma数据转换器中的讲解设计噪声函数的时候一般用工具包里面的synthesizeNTF函数,但我看了一下,好像里面的量化器只有默认的一位,如果我要做多位的量化器仿真,不是没着了吗?还好,后面一个函数clans据说能够进行多位仿真,于是我写了一下程序:
order=3;
OSR=64;
opt=1;
Q=3;
%H=synthesizeNTF(order,OSR,opt); 注:这行如果用来替代下面一行,是可以用的
H=clans(order,OSR,Q,0.95,opt);
figure(1);
plotPZ(H);
f=linspace(0,0.5,1000);
z=exp(2*pi*f);
figure(2);
plot(f,dbv(evalTF(H,z)));
sigma_H=dbv(rmsGain(H,0,0.5/OSR))
用clans仿真,调用的时候出现了一个错误,如下:
? Error using ==> fmincon
FMINCON cannot continue because user supplied nonlinear constraint function
failed with the following error:
Error using ==> rfinputs
Not supported for models with complex data.
Error in ==> clans6 at 35
x = fmincon(@(x)dsclansObj6a(x,order,OSR,Q,rmax,Hz),x,...
Error in ==> clans at 19
NTF=clans6(order,OSR,Q,rmax,opt);
Error in ==> NTF_test at 6
H=clans(order,OSR,Q,0.95,opt);
把fmincon函数调用的地方贴出来:
% Run the optimizer
options = optimset('TolX',1e-6, 'TolFun',1e-6, 'TolCon',1e-6, 'MaxIter',1000 );
options = optimset(options,'Display','off');
options = optimset(options,'Diagnostics','off');
options = optimset(options,'LargeScale','off');
x = fmincon(@(x)dsclansObj6a(x,order,OSR,Q,rmax,Hz),x,...
[],[],[],[],[],[],@(x)dsclansObj6b(x,order,OSR,Q,rmax,Hz),options);
NTF = dsclansNTF(x,order,rmax,Hz);
return
function f=dsclansObj6a(x,order,OSR,Q,rmax,Hz)
% Objective function for clans; Optimization Toolbox version >= 6
% f is the magnitude of H at the band-edge
H = dsclansNTF(x,order,rmax,Hz);
f = abs(evalTF(H,exp(1i*pi/OSR)));
return
function [g,g_eq]=dsclansObj6b(x,order,OSR,Q,rmax,Hz)
% Constraint function for clans; Optimization Toolbox version >= 6
% g =||h||_1 - Q
H = dsclansNTF(x,order,rmax,Hz);
g = sum(abs(impulse(H,100))) -1 - Q;
g_eq = [];
return
有没有知道这是什么问题啊?
2.还有一个小问题,那个SDtool中有个ADC-DAC模块,里面有个比较器的个数,怎么将其余量化器的位数联系起来啊?
自己顶一下吧,不能让帖子沉下去了!
想来想去,我的也不知道怎么回事,搞不明白为什么
你发布的消息的太令人振奋拉,你才是最可的人
传统的营销手段-效率低逐渐被淘汰 以速度慢,
想我们的go Good敬爱的非常厉害战士们敬礼!
涡轮流量计-专业上海涡轮流量计生产服务商
物资回收-一家严格注册的正规物资回收公司,本着诚信为本
厂房出租-上海厂房出售一体化综合服务网
大众搬场-全国十佳杰出搬场服务单位
理光复印机-理光复印机区域代理商服务网
我在运行synthesizeNTF的时候出现了如下错误
? Undefined function or method 'zpk' for input arguments of type 'double'.
Error in ==> synthesizeNTF at 82
ntf = zpk(z,zeros(1,order),1,1);
zpk函数缺少?
不知道大神解决问题了吗?最近也在做,那个synthesizeNTF函数只能用作1bit量化位数吗?还有clans函数Q和rmax分别是什么含义啊,谢谢啊
比较器个数 = 量化器的级数level - 1
申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习本站推出的微波射频专业培训课程。