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

1 vue (au cours des 30 derniers jours)
IDN
IDN le 18 Juil 2022
Commenté : Voss le 19 Juil 2022
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 commentaires
Adam Danz
Adam Danz le 18 Juil 2022
That should be easy to implement. If those are your variable names, then that's exactly the code you would use to produce those outputs. But I must admit, I am still quite uncertain of the goal.
IDN
IDN le 18 Juil 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.

Connectez-vous pour commenter.

Réponse acceptée

Voss
Voss le 18 Juil 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
  2 commentaires
IDN
IDN le 19 Juil 2022
Thank you so much!
Voss
Voss le 19 Juil 2022
You're welcome!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Cell Arrays dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by