필터 지우기
필터 지우기

How to call a multi output function without repeating the run

조회 수: 2 (최근 30일)
joshua Abam
joshua Abam 2019년 12월 10일
편집: Stephen23 2020년 1월 4일
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
Steven Lord
Steven Lord 2019년 12월 13일
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.

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

채택된 답변

Fabio Freschi
Fabio Freschi 2019년 12월 10일
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
joshua Abam
joshua Abam 2020년 1월 4일
Hi Fabio
I taught about that but was a bit uncertain.
Thanks for the suggestion .
kind regards
Joshua
Stephen23
Stephen23 2020년 1월 4일
편집: Stephen23 2020년 1월 4일
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:

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Problem-Based Optimization Setup에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by