First of all, the 'U' value will be because you havent initialised your signals or assigned them to anything. Do you have a testbench? can you post your code?
Secondly I would never declare a multidimensional array of std_logic. It makes life very difficult, unless you enjoy assigning individiul bits of a whole number.
What are these value meant to represent? numbers? just an array of bits?
Anyway, easiest to do something like this:
type array1_t is array(0 to 7, 0 to 7) of std_logic_vector(7 downto 0);
signal matrix : array1_t;
then you can assign stuff like this:
matrix(3,7) <= x"FF";