0

我需要用给定传递函数的变化“k”绘制根轨迹,而不使用任何特殊的 Matlab 函数,即“rlocus”、“tf”。我被允许使用根。下面的代码显示一条我无法弄清楚的错误/警告消息(下标索引必须是真正的正整数或逻辑。)。

看我的代码。

%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

谢谢

4

1 回答 1

0

正如@David 已经在评论中描述的那样,问题在于您使用k=0:0.1:1000的是索引。因此,您尝试访问qs(0), qs(0.1), ...,这在 MATLAB 中是不可能的。索引必须是大于 0 的整数值即从1开始。(与大多数编程语言不同,索引从0开始)。

我建议k通过创建一个k包含0:0.1:1000然后ii在 for 循环中使用单独的变量(例如)作为索引变量的向量来分离索引变量:

%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
于 2015-04-07T05:50:00.773 回答