Indexing cannot yield multiple results matlab

3 views (last 30 days)
i have my function like this;
when i run the the program it gives; Indexing cannot yield multiple results.Error in [Edump,Eb,Ech] = charge(Phkt,Pw,Pp,Ebmax,uinv,Pl,t,PchE,dump,Eb,Ech)
if true
% code
end
function [Edump,Eb,Ech] = charge(Phkt,Pw,Pp,Ebmax,uinv,Pl,t,PchE,dump,Eb,Ech)
global Phkt Pw Pp Eb Ebmax uinv Pl t Ech
% CHARGE
Pch(t)=( Pp(t)+Pw(t)+Phkt(t))-(Pl(t)/uinv);
Ech(t)=Pch(t);%*1;%one hour iteration time
if Ech(t)<=Ebmax-Eb(t)
Eb(t)=Eb(t-1)+Ech(t);
if Eb(t)>Ebmax
Eb(t)=Ebmax;
Edump(t)=Ech(t)-(Ebmax-Eb(t));
else
Edump(t)=0;
end
return
else
Eb(t)=Ebmax;
Edump(t)=Ech(t)-(Ebmax-Eb(t));
return
end
end
[Edump,Eb,Ech] = charge(Pp,Pw,Phkt,Eb,Ebmax,uinv,Pl,t,Edump,Ech);
  2 Comments
Star Strider
Star Strider on 24 Dec 2016
What arguments (and their sizes and classes) are you passing to your ‘charge’ function?
Tahir Ibitoye
Tahir Ibitoye on 5 Jan 2017
I don't get you.... Can you please explain what you are trying to say? I'm not that vast in the use of MATLAB

Sign in to comment.

Accepted Answer

Adam
Adam on 5 Jan 2017
Why on earth are you declaring a bunch of global variables of the same names as many that you are passing into your function? At best this will do nothing, at worst it will have all kinds of unwanted effects that could cause a load of obscure bugs.
The error you are getting though suggests that when you call
[Edump,Eb,Ech] = charge(Phkt,Pw,Pp,Ebmax,uinv,Pl,t,PchE,dump,Eb,Ech)
Matlab thinks 'charge' is a variable that it is indexing into rather than a function that it is calling. So first thing to check is where you call it do you have a variable called 'charge' also? If so then this is the problem (or at least the problem causing the error you give).

More Answers (0)

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!