Put nested structure into another structure

9 visualizzazioni (ultimi 30 giorni)
Below I have a function that returns a struct ( my actual code has many functions as methods in an object that return similar data).
function out = get_results1
mystruct.name = "result1";
mystruct.value = 23;
mystruct.unit = 'mph';
out = mystruct;
end
However I have some functions that return more than one result.. for example:
function out = get_results2
mystruct.name = {"result1"; "result2"};
mystruct.value = {23; 34 };
mystruct.unit = 'mph';
out = mystruct;
end
My goal is to comebine the results of all of these functions into a table like the following:
a = get_results1();
b = get_results2();
combined = [a, b];
mytable = struct2table(combined);
however this will not work because of inconsistent sizes... Could someone tell me the following:
1) Should I restructure my functions to provide a different output?
2) Is there another way pull out the nested structures from the functions that have multiple results?

Risposta accettata

Steven Lord
Steven Lord il 31 Gen 2020
Why not go directly to a table array?
a = maketable("result1", 23, "mph");
b = maketable(["result1"; "result2"], [23; 34], ["mph"; "mph"]);
c = [a; b]
function T = maketable(name, value, unit)
T = table(name, value, unit);
end
You could be a little more sophisiticated and avoid the need to duplicate the units by checking inside maketable if you need to repmat one or more of the variables (for scalar expansion) or you could call maketable more frequently.
a = maketable("result1", 23, "mph");
b = [a; maketable("result1", 23, "mph")];
c = [b; maketable("result2", 34, "mph")]
function T = maketable(name, value, unit)
T = table(name, value, unit);
end
  1 Commento
Devin Kim
Devin Kim il 1 Feb 2020
I ended up just doing this in my functions:
function out = myfunc()
result1.name = "name1";
result2.name = "name2";
result1.value = 23;
result2.value = 24;
out = [result1, result2];
However I think your answer is a good alternative as well! Thanks. I am now having trouble putting my table into a UI table... but I'll dig in to that on my own some more.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Structures in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by