Passing multiple variables to function in 1 input

9 次查看(过去 30 天)
Is there any way to pass multiple variables in a single structure/cell/vector/whatever to a function, so that I can avoid writing out all variables and call variables within function shortly by their names (rather than eg. structureName.variableName)?
In other words, instead of this:
a=1;
b=2;
c=3;
...
z=24;
myFun(a, b, c, ..., z)
(and inside my function:)
function myFun(a, b, c, ..., z)
newVal = c % calling variable shortly by its name
I would like to have something like:
alphabet = struct('a', 1, 'b', 2, 'c', 3, ..., 'z', 24);
myFun(alphabet)
(and inside my function:)
function myFun(alphabet)
newVal = c % calling variable shortly by its name
  3 个评论
Maciej Grybko
Maciej Grybko 2018-11-4
Or maybe saving workspace and loading it at the beginning of every function?
Stephen23
Stephen23 2018-11-5
"Or should I use global variables instead?"
No.
Global variables are one way that beginners force themselves into writing slow, complex, buggy code.

请先登录,再进行评论。

采纳的回答

madhan ravi
madhan ravi 2018-11-4
编辑:Walter Roberson 2018-11-4
  1 个评论
Maciej Grybko
Maciej Grybko 2018-11-4
Thanks. I checked couple of links. For me the best solution is structure array.
a = 1;
b = 24;
c = 349;
d = 0.07;
mydata = struct('f', {a, b, c, d})
[a, b, c, d] = mydata.f

请先登录,再进行评论。

更多回答(2 个)

Matt J
Matt J 2018-11-5
编辑:Matt J 2018-11-5
See my STRUCTVARS FEX tool for unpacking lots of structure fields to separate variables.
  1 个评论
Maciej Grybko
Maciej Grybko 2018-11-6
Thanks Matt. That's what I was looking for. However, I figured out that the same is possible with MATLAB built-in structure arrays.
a = 1;
b = 24;
c = 349;
d = 0.07;
mydata = struct('f', {a, b, c, d})
[a, b, c, d] = mydata.f

请先登录,再进行评论。


Matt J
Matt J 2018-11-5
If your variables really are just a long list of scalars, like in your posted example, you should be using vectors to carry them around, e.g.,
X=[a,b,c,d,...,z];
function myFun(X)
newVal = X(3)

类别

Help CenterFile Exchange 中查找有关 Variables 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by