Combining many variables into one table
이전 댓글 표시
I have 100 variables from simulink output all stored in a huge .mat file (after being collated from seperated .mat files). I just want a specific variable from each one in a table. The examples of making a table have a few variables in that you type the names manually to create the table.
T = table (results(1, 1).Collision1.signals.values, results(2, 1).Collision1.signals.values,results(3, 1).Collision1.signals.values, results(4, 1).Collision1.signals.values
I will have 300 so this isnt an option.
How can I get the specific variable out I want :
results(1, 1).Collision1.signals.values
results(2, 1).Collision1.signals.values
results(3, 1).Collision1.signals.values
******
results(99, 1).Collision1.signals.values
results(100, 1).Collision1.signals.values
and plot them all in one table?

(figure 1, variables from .mat resullts workspace)
Many thanks
Erin
답변 (2개)
Benjamin Thompson
2022년 3월 10일
0 개 추천
You can use addvars in a for loop to successively add columns to a table. Note all table columns will need to have the same number of entries. I am guessing at variable names here but if you have further questions post sample data.
T = table();
for i = 1:N
T = addvars(T, results(i, 1).Collision1.signals.values,['results(' num2str(i) ', 1).Collision1.signals.values']);
end
댓글 수: 4
erin wootton
2022년 3월 11일
Benjamin Thompson
2022년 3월 11일
You can always type "help tabular/addvars" or "doc tabular/addvars" for more information. I missed the 'NewVariableNames' argument that was needed, and I imagine you will need to make additional adjustments to suit your needs. If you have further questions please post code and data.
T = addvars(T, results(i, 1).Collision1.signals.values, 'NewVariableNames', ['results(' num2str(i) ', 1).Collision1.signals.values']);
Peter Perkins
2022년 3월 11일
This will probably work, but will create some pretty awkward variable names. I suggest something more like ['X' num2str(i)]. Also, addvars is fine, but
T.(['X' num2str(i)]) = results(i, 1).Collision1.signals.values
might be easier to read.
Benjamin Thompson
2022년 3월 11일
Yes the OP is free to use some alternative variable naming scheme.
Peter Perkins
2022년 3월 11일
0 개 추천
In recent MATLAB version, there's Simulink.Simulation.Dataset called extractTimetable. Not sure if that's what you have, but it might help.
카테고리
도움말 센터 및 File Exchange에서 Tables에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!