concatenate mutiple tables repetative

1 view (last 30 days)
George
George on 16 Oct 2013
Edited: Stephen23 on 21 Oct 2019
Hello
I have a very large number of individual tables at my workspace, and I would like to concatenate them into a larger one by vertically combining all of them.
I have seen vertcat but i think it doesn't do so many repetition
The form of the final table is supposed to be =[A;B;...;n], does any body know of a way to automatically concatenate them.
the tables are generated into the workspace after some data manipulation of some .netCDF files, each table has been assigned a name automatically e.g. W1, W2.....Wn.
I had the tables into a structure (struct 1x1), but due to certain conditions had to individually extract them and save them assigning them with a timestamp, so now they are on the workspace as a table of 1603x561.
So all the tables are exactly the same dimension but my problem is how to automatically combine them vertically
thanks
george
p.s. the questioned is a re-post unfortunately the previous answer was not working ,thank though for the contribution in adnvance
  11 Comments
dpb
dpb on 16 Oct 2013
Edited: dpb on 16 Oct 2013
It was essential that the tables were ... given separate names
I don't believe that for a minute... :) That all could have been done in different manner. At least two better alternatives of named structure fields or cell arrays have been posited regardless of version. A third if you have a late release.
One alternate solution would be to go back to the beginning before you split them all up and just create the whole thing from the git-go and forget about the current W* arrays entirely.
By this I mean you could leave your existing code up to this point that works for the plots and all but instead of then trying to smush all these together that as you've discovered isn't simple just say
clear W*
to free up memory and then build the full data set from the files again. This is somewhat inefficient in that it is redundant, yes, but it lets you get from where you are to where you want to go and you can then if this is going to be a repeating future need make the modifications in your existing code without that being on a critical path to finishing this dataset.
Whatever you do, it is just going to be plain ugly and get uglier all the time to continue this route.
The only way out from here is eval or writing them all out explicitly in a try...catch...end block to handle any non-existant ones, etc. or other equally bad (or even worse) choices.

Sign in to comment.

Answers (2)

Sean de Wolski
Sean de Wolski on 16 Oct 2013
Are these "tables" actual table datatypes? If they are then you can use innerjoin/outerjoin/stack etc.
If they are not, then you might want to consider using tables instead (new in R2013b).

Azzi Abdelmalek
Azzi Abdelmalek on 16 Oct 2013
Edited: Azzi Abdelmalek on 16 Oct 2013
It's recommanded to generate one variable w instead of w1,w2,...
If you have no choice to do it, you can try this:
n=5
s=['w=[' sprintf('W%d;',1:n) ']']
eval(s)

Categories

Find more on Tables in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!