Matlab符号提示;尝试设计一个三阶sallen密钥过滤器

Matlab符号提示;尝试设计一个三阶sallen密钥过滤器,matlab,filter,signal-processing,Matlab,Filter,Signal Processing,尝试使用matlab设计三阶sallen-key滤波器: [B,A]=cheby1(3,1,10*10^6*2*pi,'s'); %3rd order sallen key syms R1 R2 R3 R4 R5 C1 C2 C3 M=1+R4/R5; num=[M/(R1*R2*R3*C1*C2*C3)]; den=[1 (1/(R1*C1)+1/(R2*C1)+1/(R2*C2)+(1-M)/(R3*C3)+1/(R3*C2)) ((C3*R3+R1*C3+R2*C3+C1*R1+(1-M

尝试使用matlab设计三阶sallen-key滤波器:

[B,A]=cheby1(3,1,10*10^6*2*pi,'s');

%3rd order sallen key
syms R1 R2 R3 R4 R5 C1 C2 C3
M=1+R4/R5;
num=[M/(R1*R2*R3*C1*C2*C3)];
den=[1 (1/(R1*C1)+1/(R2*C1)+1/(R2*C2)+(1-M)/(R3*C3)+1/(R3*C2)) ((C3*R3+R1*C3+R2*C3+C1*R1+(1-M)*(R1+R2)*C2)/(R1*R2*R3*C1*C2*C3)) (1/(R1*R2*R3*C1*C2*C3))];

solve('B=num','A=den','M=5','R1','R2','R3','R4','R5')
它告诉我:

Warning: 3 equations in 5 variables. New variables might be introduced.  
Warning: Explicit solution could not be found. 
cheby1
为切比雪夫1型过滤器提供传递函数(分子和分母);然后我试着把它等同于三阶萨伦键滤波器的传递函数形式;并通过matlab,根据电容值求解电阻值

==>如何获得我想要的解决方案


注意:这与正在执行的实际计算无关,而与如何使用matlab有关。

也许我遗漏了一些东西,但B是1x4向量,而num是标量,因此无法得到答案。此外,(编辑)您不能从命令窗口求解间接方程式(即
solve('M=5','R1','R2')
不起作用,但
solve('1+R1/R2=5','R1','R2')
will)

即使你纠正了这些,我怀疑这对于符号工具箱来说太复杂了(解决方案可能是一个真正的高阶多项式,无法显式求解)


最好的办法是使用数值方法来找到一个数值解

这不是解决这个问题的正确方法。建议迁移到dsp.SE或electronics.SE。问题更多的是关于matlab符号工具箱的使用;关于我试图完成的实际任务,我想说的更少。@nibot,dsp.SE仍然是一个私有测试版。无法迁移到那里。嗯,MuPAD引擎根本没有任何价值。对于
R5
,它甚至无法求解方程
M=1+R4/R5
。你是对的,最好的方法是使用数值解。@Egon MuPad有它的优点,但有些事情它做不到。人类不能解一般的五次方程,所以不要指望软件会更好。我同意有些东西是不能象征性地解的。但是如果你的CA不能解基本方程,比如
M=1+R4/R5
(可能是由于
M=2
的限制,我不认为这是一个好的CAS。即使我的HP 50g也可以象征性地解决这个问题。@Egon,Matlab可以解决这个方程……我花了一点时间重新发现了thou、MuPAD和Matlab命令提示符需要不同的输入。我还注意到,不能用字符串来解决这些间接方程s、 但是,您可以准备字符串之外的所有内容。您可以根据应该有效的帮助查看我的代码,但它不起作用。但是,如果您必须手动操作这些字符串,您也可以手动进行计算(至少这是我的意见)。