0

Mathworks ドキュメントのコード スニペットを見てください。

ハードディスクドライブのデジタルサーボ制御

Gf1 = tf(w1*[a1 b1*w1],[1 2*z1*w1 w1^2]); % first  resonance
Gf2 = tf(w2*[a2 b2*w2],[1 2*z2*w2 w2^2]); % second resonance
Gf3 = tf(w3*[a3 b3*w3],[1 2*z3*w3 w3^2]); % third  resonance
Gf4 = tf(w4*[a4 b4*w4],[1 2*z4*w4 w4^2]); % fourth resonance

私の質問は、次のようなループ内で上記のステートメントをどのように実装できるかです。

% pseudo code

for i = 1:4

Gf%d = tf(w%d*[a%d b%d*w%d],[1 2*z%d*w%d w%d^2]); i

結果をmatlabで実行しますか?

4

3 に答える 3

1

1 つのオプションを次に示します。

w = [w1 w2 w3 w4];
%# same thing for a, b, d...

for i=1:4
    Gf(i) = tf(w(i)*[a(i) b(i)*w(i)],[1 2*z(i)*w(i) w(i)^2]); % ith  resonance
end
于 2012-07-19T23:52:16.903 に答える
0

これを行う最良の方法は、配列を使用することです。

for i = 1:n
  trans(i) = % your stuff here %
end

次に、さまざまな変数を正しい配列インデックスに置き換えます。

于 2012-07-19T23:50:20.393 に答える
0

次のいずれかを使用できますeval

for i = 1:4
    eval(sprintf('Gf%d = tf(w%d*[a%d b%d*w%d],[1 2*z%d*w%d w%d^2]);', i));
end

または、パラメーターを配列に変換できます。データのフォーマット方法を制御できる場合、配列はより効率的です。

于 2012-07-19T23:52:08.527 に答える