2
$\begingroup$

I have a correlation matrix, which I want to display in the following format:

  • 2 decimal places (e.g., -0.56)
  • number signs "+" and "-" (e.g., +0.76 or -0.34)

I've tried many different things, but I had no success so far... The code I'm using to generate the data is:

randomWalk[x_] := Accumulate[Prepend[RandomVariate[NormalDistribution[0, 1], x], 0]]
exchange = Table[Subscript[asset, i] = randomWalk[500], {i, 1, 5}];

Now the code I'm using to generate the correlation matrix:

N[Correlation[Transpose[exchange][[1 ;; 500, All]]], 2]//MatrixForm

However, the numbers generated are displayed with $MachinePrecision, and not 2 decimal places (although I've used N[#,2]). I've tried another code:

MatrixForm[Round[Correlation[Transpose[exchange][[1 ;; 500, All]]], 0.01]]

In this case I get the correlation matrix with 2 decimal places, but it's still missing the "+" signal before the number. So I've tried this last code:

NumberForm[Round[Correlation[Transpose[exchange][[1 ;; 500, All]]], 0.01],NumberSigns -> {"-", "+"}]//MatrixForm

In this last case I get the numbers correctly formatted, but I'm not able to put them in MatrixForm. Can someone give me a hint to solve this?

$\endgroup$
2
  • $\begingroup$ Why not NumberForm[MatrixForm[Round[...,NumbersSigns->{"-","+"}]? $\endgroup$
    – andre314
    Commented Apr 9, 2013 at 16:00
  • $\begingroup$ @ andre Thanks A LOT !!! It works perfectly now! $\endgroup$
    – Rod
    Commented Apr 9, 2013 at 16:02

2 Answers 2

4
$\begingroup$

It is perfectly possible to wrap NumberForm around MatrixForm :

NumberForm[MatrixForm[Round[...,NumbersSigns->{"-","+"}] does the job

$\endgroup$
5
$\begingroup$

Of course there are many ways of doing this. Here's one:

mat = RandomReal[{-1, 1}, {4, 4}]
Table[NumberForm[mat[[i, j]], {3, 2}, NumberSigns -> {"-", "+"}], 
     {i, 1, 4}, {j, 1, 4}] // MatrixForm

You get:

enter image description here

$\endgroup$
8
  • $\begingroup$ Imagine you have mat defined... try to use: NumberForm[mat, NumberSigns -> {"-", "+"}] // TableForm. It doesn't work... $\endgroup$
    – Rod
    Commented Apr 9, 2013 at 14:47
  • $\begingroup$ what's wrong with the output of the above, either Table or Map? $\endgroup$
    – bill s
    Commented Apr 9, 2013 at 14:50
  • $\begingroup$ You've generated numbers with 2 decimal places... try something with $MachinePrecision... $\endgroup$
    – Rod
    Commented Apr 9, 2013 at 14:52
  • $\begingroup$ mat has full real precision, it's the argument {3,2} that does the truncating to 3 significant digits plus two to the right of the decimal place. $\endgroup$
    – bill s
    Commented Apr 9, 2013 at 14:54
  • 1
    $\begingroup$ @RodLm What would be the problem there? You understand bill's matrix is just an example, right? We wouldn't like to display a 500x5 matrix here just to be closer to your matrix $\endgroup$ Commented Apr 9, 2013 at 15:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.