Put nested structure into another structure
조회 수: 10 (최근 30일)
이전 댓글 표시
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?
댓글 수: 0
채택된 답변
Steven Lord
2020년 1월 31일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!