필터 지우기
필터 지우기

error while running a loop inside transfer function

조회 수: 1 (최근 30일)
Kobi
Kobi 2013년 4월 18일
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?

채택된 답변

Walter Roberson
Walter Roberson 2013년 4월 18일
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
Kobi
Kobi 2013년 4월 19일
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);

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Kobi
Kobi 2013년 4월 20일
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.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by