How can I add " " to first row and column in a cell

2 vues (au cours des 30 derniers jours)
Orongo
Orongo le 14 Oct 2018
Commenté : Orongo le 15 Oct 2018
Hi, I have created a cell with average values of 100 simulations. Now I need to save this as a text file (space delimited or tab delimited) and append a first row dating each column 1996 to 2014 and append a column starting from 0 to 10. So the final file should look something like this
\begin{table}[]
\begin{tabular}{llllllllllllllllllll}
& "1996 & "1997 & "1998 & "1999 & "2000 & "2001 & "2002 & "2003 & "2004 & "2005 & "2006 & "2007 & "2008 & "2009 & "2010 & "2011 & "2012 & "2013 & "2014 \\
"0" & 50787.83 & 47436.17 & 46186.5 & 45683.67 & 46057.83 & 47013.17 & 48264.5 & 50231.5 & 51607.67 & 52102.5 & 53428.67 & 55074.83 & 55994.67 & 57143.67 & 58627 & 58441.5 & 57857.17 & 58500 & 59133.33 \\
"1" & 55247.83 & 50901.5 & 47571.67 & 46402.5 & 45965.5 & 46415.33 & 47408.67 & 48660.17 & 50574.5 & 51968.33 & 52603.17 & 53985.67 & 55702.67 & 56674.83 & 57777.5 & 59281.83 & 59128.83 & 58549.5 & 59263.67 \\
"2" & 58692.67 & 55244.67 & 50939.17 & 47694 & 46577.5 & 46207.17 & 46678.67 & 47649.67 & 48880.83 & 50775.33 & 52282.83 & 53033 & 54464.17 & 56212.83 & 57121.5 & 58207.17 & 59760.67 & 59717.5 & 59264.17 \\
"3" & 61737.83 & 58658.67 & 55259.67 & 51039.17 & 47897.5 & 46825.33 & 46469.67 & 46934.67 & 47869.67 & 49071.17 & 51068.5 & 52712.33 & 53502.67 & 54924.33 & 56576.83 & 57456.5 & 58620.17 & 60264.83 & 60328.33 \\
"4" & 64110 & 61690.83 & 58689.17 & 55348.83 & 51187.17 & 48127.17 & 47110.67 & 46742 & 47157.83 & 48042 & 49339.67 & 51444.67 & 53143.67 & 53971.17 & 55296 & 56903.17 & 57830 & 59098.33 & 60867 \\
"5" & 64941.67 & 64102.67 & 61705.83 & 58748.67 & 55470.33 & 51380.67 & 48350.83 & 47363.33 & 46974.17 & 47331 & 48271 & 49657.83 & 51813.33 & 53539.67 & 54313.67 & 55584 & 57231.33 & 58336.83 & 59693.5 \\
"6" & 63331.17 & 64964.67 & 64169.5 & 61790.83 & 58867.33 & 55665 & 51623.83 & 48565.17 & 47548.83 & 47146.33 & 47645.33 & 48727.33 & 50083.5 & 52207.67 & 53870.83 & 54582.17 & 55910.67 & 57733.5 & 58983.83 \\
"7" & 60858.5 & 63407.5 & 65060.67 & 64272.17 & 61933 & 59037.17 & 55857 & 51833 & 48756.33 & 47696.5 & 47368.83 & 47987 & 49111.83 & 50500.5 & 52593.5 & 54191.67 & 54927 & 56437.17 & 58374.83 \\
"8" & 58079.17 & 60920.17 & 63499.5 & 65189.17 & 64434 & 62126.83 & 59266.17 & 56080.67 & 52033.67 & 48955.5 & 47989.5 & 47762.33 & 48411.33 & 49530.17 & 50818.33 & 52839 & 54503.83 & 55453.67 & 57084.67 \\
"9" & 55710.67 & 58150 & 61031.33 & 63629 & 65354.67 & 64640.83 & 62343 & 59489.83 & 56297.5 & 52182.33 & 49200.33 & 48376.17 & 48182.17 & 48848.83 & 49914.5 & 51152.5 & 53205 & 55058.17 & 56106.83 \\
"10" & 54632.33 & 55824.67 & 58302.17 & 61172.17 & 63780.67 & 65538.17 & 64849 & 62576.83 & 59712 & 56481.33 & 52457.83 & 49606.5 & 48782.67 & 48564.83 & 49177.5 & 50207.5 & 51494 & 53744.83 & 55719.67
\end{tabular}
\end{table}
How can I write this in Matlab?
  3 commentaires
Guillaume
Guillaume le 14 Oct 2018
Modifié(e) : Guillaume le 14 Oct 2018
This appears to be latex syntax. It's going to depend on what packages are loaded, but usually the " symbol is a right-double quotation mark. On the left it should be `` (two reversed sinqle quotes). However, I don't see the need for quotes at all.
If the first row is a header, shouldn't there be a \hline after it? Similarly, if the first column is a header, wouldn't you have a | after the first l in the {tabular} column description?
Orongo
Orongo le 14 Oct 2018
Hi Walter, yes there should be a double quote at end of the year number. This was a mistake.

Connectez-vous pour commenter.

Réponse acceptée

Guillaume
Guillaume le 14 Oct 2018
Adding the headers to your cell array as you require is trivial:
newcellarray = [{}, compose('"%d', 1996:2014); compose('"%d", (1:10)'), yourcellarray]
  5 commentaires
Guillaume
Guillaume le 15 Oct 2018
There is no point of putting your mean matrix into a 1x1 cell array. It just adds an unnecessary level of indirection, so:
avg_m_male = mean(cat(3, m_xt_sim_male{:}), 3);
With the 2nd option, I don't know why I wrote 1:10 instead of 0:100. Also, I forgot a ' in the 2nd compose. And I made a mistake with creating the top-left cell:
%with avg_m_male being a 101x19 matrix:
out_cell = [{[]}, compose('"%d', 1996:2014); compose('"%d"', (0:100)'), num2cell(avg_m_male)];
Orongo
Orongo le 15 Oct 2018
Thank you for clarifying. I did modify you initial suggestion but it's not as clean as yours! Many thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by