error while running a loop inside transfer function

1 view (last 30 days)
i'm trying to change the value of k from to 0.1:0.1:7 and when i try this i get this error
??? Error using ==> InputOutputModel.subsasgn at 58
Subscript indices must either be real positive integers or logicals.
Error in ==> spect at 7
G(k)=tf([k],[10*10^-3 1]);
my code:
for k=0.1:0.1:7;
G(k)=tf([k],[10*10^-3 1]);
end
how can i fix that?

Accepted Answer

Walter Roberson
Walter Roberson on 18 Apr 2013
You are trying to assign the value of the tf() call into G(k) when k is not an integer. Subscripts must be positive integers.
kvals = 0.1 : 0.1 : 7;
for kidx = 1 : length(kvals)
k = kvals(kidx);
G(kidx) = tf([k],[10*10^-3 1]);
end
  1 Comment
Kobi
Kobi on 19 Apr 2013
ok, but i still don't fully understand what this line does:
k = kvals(kidx);
i'm trying to do the same for all of my program like that:
kvals=0.1:0.1:7; % Change the values of k parameter
for kidx=1:length(kvals);
k=kvals(kidx);
G(kidx)=tf([k],[10*10^-3 1]);
Gtotal(kidx)=feedback(G(k),1);
TAU(kidx)=(G(k).den{1}(1))/(G(k).num{1}(2));
end
and i get this error
??? Error using ==> InputOutputModel.subsref at 44
Subscript no. 2 is out of range.
Error in ==> Untitled at 5
Gtotal(kidx)=feedback(G(k),1);

Sign in to comment.

More Answers (1)

Kobi
Kobi on 20 Apr 2013
please help i don't understand what am i doing wrong
clear all
clc
kvals=0.1:0.1:7; % Change the values of k parameter
for kidx=1:length(kvals);
k=kvals(kidx);
G(kidx)=tf([k],[10*10^-3 1]);
Gtotal(kidx)=feedback(G(k),1);
TAU(kidx)=(0.01)/(G(k).num{1,1}(2));
end
this thing just won't work.

Categories

Find more on Introduction to Installation and Licensing in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!