Scilab绘制离散全通系统零极点图失败求助
解决Scilab离散全通系统零极点图绘制问题
问题1:实轴零极点代码错误
原代码的核心问题是用[]包裹多项式,导致n和d被定义为多项式矩阵而非单个多项式,syslin无法正确处理该类型输入。
修正后的代码:
z = poly(0,'z'); n = z - 4/3; // 定义分子多项式 d = z - 3/4; // 定义分母多项式 h = syslin('d', n, d); // 定义离散线性系统 plzr(h);
也可以直接传递有理函数,写法更简洁:
z = poly(0,'z'); h = (z - 4/3)/(z - 3/4); plzr(h);
问题2:复零极点代码错误
原代码存在两处关键问题:
- 分母定义存在语法错误:
(3/4)z*exp(...)缺少乘号,应改为(3/4)*exp(%i*%pi/3) - 未添加共轭零极点:实系数离散全通系统的复零极点必须共轭成对出现,否则系统系数为复数,不符合实际物理系统,还可能导致绘图异常。
修正后的代码:
z = poly(0,'z'); // 定义共轭零点对 zero1 = (4/3)*exp(%i*%pi/3); zero2 = (4/3)*exp(-%i*%pi/3); n = (z - zero1)*(z - zero2); // 定义共轭极点对 pole1 = (3/4)*exp(%i*%pi/3); pole2 = (3/4)*exp(-%i*%pi/3); d = (z - pole1)*(z - pole2); h = syslin('d', n, d); plzr(h);
代码说明:
- 移除不必要的
[]包裹,确保n和d为单个多项式 - 补充共轭零极点,保证系统为实系数
- 修复分母中的语法错误(添加缺失的乘号)
运行上述修正后的代码,即可正常绘制离散全通系统的零极点图。
内容的提问来源于stack exchange,提问作者lakshminarayanan raghavendran
相关产品推荐
相关产品推荐

