
Tim Rowe writes:
On 5/11/05, Jerzy Karczmarczuk
wrote: Give me one single language where [3-d arrays are] natural and immediate.
I don't know how Matlab does it, but I find the C++ standard library vector
> entirely intuitive (apart, perhaps, for the need for those two spaces)!
Let's precise what I consider to be important in order to call it natural and immediate. And, in general, useful. 1. The definition of a concrete object, not just its type, but, say, the initialization with constants. Or/and, global initialization with zeros. 2. Easy synthesis of multi-dim matrices out of "planes", of submatrices of lesser dimensions; it can be an 'overlay', like, say, making a colour image out of three R/G/B planes, or making a 3D surfaces, or aking tensors through external products. 3. Easy indexing, and not only A[i][j][k], etc., but slicing, the extraction of sub-dimensional matrices, e.g., one column vector out of a 2D matrix in Matlab: A(3,:). Also, extracting parts (e.g. sub-images). Also, in mathematical context, "intelligent" indexing, e.g. treating a matrix as implicitly anti-symmetric. Here the CAS systems as Maple or Mathematica provide the adequate tools. C++ of course doesn't, unless you overload [] yourself. 4. Readable iterators, perhaps something more compact than insipid do-loops. 5. If those matrices are used as mathematical objects: tensors, etc., I want to have some simple notation for inner multiplications/ contractions, etc. This is not just the syntax problem, but the existence of good libraries as well... 6. Reshaping of those arrays. I thought that Matlab 'reshape' (or something similar in Numeric Python) is a baroque, rarely used construction. Now I use it quite often... So, plenty of things. That's why this is not so trivial... Jerzy Karczmarczuk