Jbarlow's answer is excellently derived but misses a major issue: Almost all of the "better" surround sound decoders such as Dolby Prologic, DTS Neo 6, Lexicon, Bose Videostage are "dynmaic", i.e. they looks constantly at the signal conditions and adjust the decoding matrix in the fly based on an estimate what the original signals may have been.

The main problem here is that the encoder is "lossy", i.e. a lot of information is lost during the encoding process and you can't fully recover the original signal. A simple example: let's say you start a "left" signal. That encodes to Lt = 1 and Rt = 0. Decoding this again then leads to signal in all five channels and not just in the left like the original condition. The only way around this is to dynamically look at correlation and panning of the input signals and adjust the decoder matrix on the fly.

Finally, while jbarlow's equations are mathematically correct, it's typically not done this way, even if it's only a static decoder. The main issue is that this creates side to side cross talk, i.e. signals that where original in the left front can end up partially in the right front which highly undesirable from a perceptual point of view. What's typically used is roughly something like this (properly normalized that is)

L= Lt, R = Rt;
C = .707*Lt + .707Rt;
Ls = .6*Lt - .3*Rt;
Rs = .6*Rt - 0.3 *Lt;


In practice most people also don't bother with the Hilbert Transformer since most encoders that do a real time downmix (such as Blu ray players, set top boxes, or TVs) don't implement it in anyway.

Decoding Matrix Encoded Surround Sound Through Convolution
I am working on an application with a team that has roughly 2 years of data. This data is shown through multiple visualization methods. Part of the application is a settings panel, which lets the user control various things about the application (How much data they see, color schemes, etc.)

In the settings panel, one of the options allows the user to view their data in table format (report style). Because there is about two years worth of data, it's been broken up in to Month and Year increments. If the user wants to export a particular month, they can export that data to a .csv which can then be opened in a third party program like Excel or Calc. This is what it currently looks like with the entire visualization screen:



Close up view:



Even with the data broken up, there is still a substantial amount in each table (probably about 150 rows). This means the user still has to scroll to view the data. My co-workers think this is the best option, however I want to take a different approach.

I personally think that everything in the settings should be something to change the way the data looks or to get some of the data to take somewhere else.

My solution would be to show the user some sample data (maybe 3-4 rows), then give them the option to export as the main function (as opposed to reading it in browser). I think this makes more sense since the user won't have the ability to sort, select, change, etc. like they would in Excel. Mine would look something like this:



It's not perfect, but it should give you a general idea of the look I'm going for. So down to the actual question...

Question

Which scenario makes more sense?


Display this much data to the user in browser (in a settings panel)
Give the user sample data and let them export it and do what they please with it

