How to call a multi output function without repeating the run
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
joshua Abam
am 10 Dez. 2019
Bearbeitet: Stephen23
am 4 Jan. 2020
Dear all,
I am having a challenge, which I think, should be possible to overcome, but how to go about it has been challenging for me, I have a function with multiple output in this case 3 output, and I am calling all three output for further use. The issue now is how do I call the three output without repeating the entire calculation in the process. As I have observed that for the 3 times I called it, it runs afresh all 3 times. In the first place calling it once is time consuming how more calling it 3 times, whic makes the process computational expensive to achieve.
Thanks
Kind regards
%The function were all the three output from the multi-output function are to be %inserted for further use.
function [c, ceq] = nonconst(x)
c = total_value(x)-u*v;... ` `%first output from the multi-output %function
u*energy_value(x);... %2nd output from the multi-output %function
v*Delta_value(x); %Third output from the multi-output %function
ceq = [];
end
%The function to call the first output from the digital function
function D_total = total_value(x)
D_total = digital(x) % ca
end
%The function to call the 2nd output from the digital function
function D_value = Delta_value(x)
[~, D_value, ~] = digital(x)
end
%The function to call the third output from the digital function
function D_energy = energy_value(x)
[~, ~, D_energy] = digital(x)
end
%This is a multi-output function comprises of 3 output which are D_total,
% D_value and D_energy
function [D_total, D_value, D_energy] = digital(x)
;;;;;;;;;;;; %The conetent of the function has been cleared
;;;;;;;;;;;
;;;;;;;;;;
end
1 Kommentar
Steven Lord
am 13 Dez. 2019
This looks to be very similar or the same as the question you were asking here where you received some explanation and advice. Why did you start another question? Clarifying questions and suggestions made in one of the discussions won't be visible to participants in the other.
Akzeptierte Antwort
Fabio Freschi
am 10 Dez. 2019
function [c, ceq] = nonconst(x)
[total_value, Delta_value, energy_value] = digital(x);
c = total_value-u*v;... ` `%first nonlinear constrain
u*energy_value;... %2nd Nonlinear constrain
v*Delta_value;
ceq = [];
end
6 Kommentare
Stephen23
am 4 Jan. 2020
Bearbeitet: Stephen23
am 4 Jan. 2020
For such trivial code as this you should not get into the bad habit of using global variables.
Passing data as input/output arguments is neater and much more efficient. Passing data as input/output arguments is what the MATLAB documentation (and all experienced MATLAB users) recommend:
Another very efficient option is to use nested functions:
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Biological and Health Sciences finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!