MATLAB Answers

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

2 views (last 30 days)
Anupam Ghosh
Anupam Ghosh on 9 Jun 2018
Commented: 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

Show 4 older comments
Walter Roberson
Walter Roberson on 24 Jun 2018
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?
Anupam Ghosh
Anupam Ghosh on 28 Jun 2018
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.
Walter Roberson
Walter Roberson on 28 Jun 2018
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.

Answers (1)

Walter Roberson
Walter Roberson on 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.

Community Treasure Hunt

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

Start Hunting!

Translated by