Loop input variables into function to get the various output in table

4 views (last 30 days)
Hello!
I have a function for which i have some variables as input that create output as follows:
function(A,B,C,D,E,F,G) - So I input varibles A thru G and get the below output X thu Z
for i = 1:varout
switch i
case 1
varout{1} = X;
case 2
varout{2} = Y;
case 3
varout{3} = Z;
end
I have for example the following input variables I want to pass thru the function all at once for me to get a table with all the output variables given the input.
A B C D E F G X Y Z
1 2 1 2 6 7 1 =
3 1 1 8 7 4 10 =
1 5 1 2 6 3 8 =
Appreciate all the help in this matter! Thanks so much!
  8 Comments
IDN
IDN on 18 Jul 2022
So Adam, what I vectors/list of the A-G variables....but want to pass them to the function somehow/systematically instead of typing set or variables individually...maybe a loop or something else...that passes thru every row in the vector/list and on that same row in another table records the output variables.

Sign in to comment.

Accepted Answer

Voss
Voss on 18 Jul 2022
Something like this maybe?
% your initial table
input_table = array2table([ ...
41 62 92 17 3 7 -2; ...
41 61 92 18 4 7 -2; ...
41.5 62 92 6 3 7 -2; ...
],'VariableNames',{'A' 'B' 'C' 'D' 'E' 'F' 'G'})
input_table = 3×7 table
A B C D E F G ____ __ __ __ _ _ __ 41 62 92 17 3 7 -2 41 61 92 18 4 7 -2 41.5 62 92 6 3 7 -2
% convert to a cell array
inputs = table2cell(input_table)
inputs = 3×7 cell array
{[ 41]} {[62]} {[92]} {[17]} {[3]} {[7]} {[-2]} {[ 41]} {[61]} {[92]} {[18]} {[4]} {[7]} {[-2]} {[41.5000]} {[62]} {[92]} {[ 6]} {[3]} {[7]} {[-2]}
% pass each row of inputs to your function, and
% collect the outputs in another cell array
N = size(input_table,1);
outputs = cell(N,3);
for ii = 1:N
[outputs{ii,:}] = your_function(inputs{ii,:});
end
outputs
outputs = 3×3 cell array
{[ 220]} {[ 110]} {[ 330]} {[ 221]} {[110.5000]} {[331.5000]} {[209.5000]} {[104.7500]} {[314.2500]}
% convert the outputs to a table
output_table = cell2table(outputs,'VariableNames',{'X' 'Y' 'Z'})
output_table = 3×3 table
X Y Z _____ ______ ______ 220 110 330 221 110.5 331.5 209.5 104.75 314.25
function [X,Y,Z] = your_function(A,B,C,D,E,F,G)
X = A+B+C+D+E+F+G;
Y = X / 2;
Z = X+Y;
end

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!