0

特別な Matlab 関数、つまり "rlocus"、"tf" を使用せずに、特定の伝達関数の "k" を変化させて根軌跡をプロットする必要があります。ルートの使用を許可します。以下のコードは、私が理解できなかったエラー/警告メッセージ (添え字のインデックスは、実数の正の整数または論理値のいずれかである必要があります) を表示します。

私のコードを見てください。

%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インデックスとして使用していることです。したがって、MATLAB では不可能な 、 、 ...qs(0)にアクセスしようとしています。インデックスは1から始まる 0より大きいqs(0.1)整数値でなければなりません。(インデックスが0から始まるほとんどのプログラミング言語とは異なります)。

を含むkベクトルを作成し、別の変数 (例: ) を for ループのインデックス変数として使用して、 とインデックス変数を分離することをお勧めします。k0:0.1:1000ii

%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 に答える