TABLE OF 2 ROWS AND 12 COLUMNS

Hi,I want to make a TABLE OF 2 ROWS AND 12 COLUMNS WITH YEAR IN THE FIRST ROW AND NUMBER OF EARTHQUAKES IN THE SECOND ROW.
year=[2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 ];
n_of_earthquakes=[1 2 4 0 1 1 1 2 2 1 1 0]

 Accepted Answer

You can't have a table like that. You can however have them in columns:
year=[2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 ];
n_of_earthquakes=[1 2 4 0 1 1 1 2 2 1 1 0]
t = table(year', n_of_earthquakes', 'VariableNames', {'year', 'n_of_earthquakes'})
If you want a matrix (a regular double numerical array) rather than a "table" variable, you can just use seimcolon:
m = [year; n_of_earthquakes]

More Answers (1)

year = 1973 : 1984;
earthquakes = randi(10000, 1, 12);
YourTable = array2table([year; earthquakes], 'RowNames', {'year', '# earthquakes'})

6 Comments

thanks for the help but randi cant help here because i have the numbers of the second row that shoud meet years in the first . I find out that i had forgotten to post my matlab script but now i post the 2 vectors
year=[2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 ];
n_of_earthquakes=[1 2 4 0 1 1 1 2 2 1 1 0];
YourTable = array2table([year; n_of_earthquakes], 'RowNames', {'year', '# earthquakes'});
thanks ,just one thing here . can we put the years instead of var1, var2.....?
Not exactly. You can do
year = [2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 ];
ylab = arrayfun( @(Y) sprintf('yr%d', Y), year, 'uniform', 0);
n_of_earthquakes = [1 2 4 0 1 1 1 2 2 1 1 0];
YourTable = array2table( n_of_earthquakes, 'VariableNames', ylab, 'RowNames', {'# earthquakes'} )
YourTable =
1×12 table
yr2005 yr2006 yr2007 yr2008 yr2009 yr2010 yr2011 yr2012 yr2013 yr2014 yr2015 yr2016
______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______ ______
# earthquakes 1 2 4 0 1 1 1 2 2 1 1 0
Notice the 'yr' in the column names. The exact text there is not important, but it is required that the names there are valid MATLAB variable names, so you cannot just use numbers. You could use 'CE' or 'Y' or 'AD' or the like, but the result must be a valid variable name.
Thanks a lot and this was what i wanted eventhough I didn't know what is this command
ylab = arrayfun( @(Y) sprintf('yr%d', Y), year, 'uniform', 0);
That command take the vector year, and for each element of it, applies the function @(Y) sprintf('yr%d', Y) . That function converts the numeric element to a string and puts the characters 'yr' in front of that, giving a character vector as a result for each numeric element. The 'uniform', 0 option tells MATLAB to put the results into a cell array, so the end result stored in ylab is a cell array, each element of which is a character vector that starts with 'yr' and then followed by the year.
Starting in R2017a, the entire line can be replaced with
ylab = "yr" + year;

Sign in to comment.

Categories

Find more on Seismology in Help Center and File Exchange

Products

Tags

Community Treasure Hunt

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

Start Hunting!