MATLAB Answers

0

error of "Too many input arguments." in my program of PSO- PI controller program

Asked by Anupam Ghosh on 9 Jun 2018
Latest activity Commented on by Walter Roberson
on 28 Jun 2018
i m getting "Too many input arguments. " error while i am running the program for finding the optimum parameter values of fractional PI controller program.

  7 Comments

I used that same code for foft when I was debugging your program. By using that same code as you are using, I was able to locate the line in your code
e=1-step(feedback(plant*cont,1,t))
which tries to invoke feedback with three input arguments -- first plant*cont, then 1, then t.
However, feedback() is not defined to accept three input arguments.
About three lines earlier in the code you had
step(feedback(plant*cont,1));
which invoked feedback() with only two input arguments -- first plant*cost, then 1.
What was your intended difference in results between invoking
feedback(plant*cont,1)
or invoking
feedback(plant*cont,1,t)
? What did you expect different to happen when you passed in t as well as the other two arguments?
step(feedback(plant*cont,1),t)
I have corrected the line to the above. but now when i run my program it is giving a new error saying "In the expression "M^K", the exponent K must be a scalar integer."
please suggest a solution.
You create
s = tf('s')
and you have
cont=Kp+(Ki/(s)^L);
which tries to raise s to the exponent stored in L .
When you are using transfer functions, the exponent you use with ^ has to be a finite integer.
In your first call to havas to deal with the initial conditions, you used round() to ensure that all of the inputs were integers. However, when you are later looping and updating your x variables, you do not take any care to ensure that x(3) is a positive integer.

Sign in to comment.

1 Answer

Walter Roberson 님의 답변 9 Jun 2018

In the line
e=1-step(feedback(plant*cont,1,t))
You are invoking feedback() with three input arguments. feedback() is only expecting two input arguments.
Just a few lines earlier you had invoked
step(feedback(plant*cont,1));
which uses it with two input arguments.

  0 Comments

Sign in to comment.