我需要使用给定传递函数的变化“k”绘制根轨迹,而不使用任何特殊的Matlab函数,即“rlocus”,“tf”。我允许使用root。下面的代码显示错误/警告消息(下标索引必须是真正的正整数或逻辑)。这是我无法弄清楚的。
查看我的代码。
%In vector form
num = input('Enter the coefficients of numerator of J(s): ');
%In vector form
den = input('Enter the coefficients of denominator of J(s): ');
qs = 0;
for k = 0:0.1:1000;
qs(k,:) = roots(den + num.*k);
end;
plot(qs,'+'), xlabel('\sigma'), ylabel('j\omega'), title ('Root-Locus'), grid
谢谢
答案 0 :(得分:0)
正如@David在评论中已经描述的那样,问题是您使用k=0:0.1:1000
作为索引。因此,您正在尝试访问qs(0)
,qs(0.1)
,...,这在MATLAB中是不可能的。索引必须是大于的整数值,而不是0,即从 1 开始。 (与大多数编程语言不同,索引从 0 开始)。
我建议通过创建包含k
的向量k
然后使用单独的变量(例如0:0.1:1000
)作为索引变量来分隔ii
和索引变量for loop:
%In vector form
num = input('Enter the coefficients of numerator of J(s): ');
%In vector form
den = input('Enter the coefficients of denominator of J(s): ');
qs = 0;
k = 0:0.1:1000;
for ii = 1:length(k)
qs(ii,:) = roots(den + num.*k(ii));
end;
plot(qs,'+'), xlabel('\sigma'), ylabel('j\omega'), title ('Root-Locus'), grid