Transpose[ InterpolatingFunction, { n1, n2, ...} ]
- To: mathgroup at smc.vnet.net
- Subject: [mg81195] Transpose[ InterpolatingFunction, { n1, n2, ...} ]
- From: pdickof at scf.sk.ca
- Date: Sat, 15 Sep 2007 04:11:18 -0400 (EDT)
Suppose I have a table, grid lines, InterpolatingFunction, and order
list as follows ...
lens = {6, 5, 4}
t = Table[i + j + k,
{i,1, lens[[1]], 1},
{j, 10, 10lens[[2]], 10},
{k, 100, 100lens[[3]], 100}]
g = {Range[lens[[1]]], 10Range[lens[[2]]], 100Range[lens[[3]]]}
f = ListInterpolation[t, g]
Evaluate that and everything makes sense. Note that
Dimensions[t]==Map[Length,g]
Now let me transpose as follows ...
axisPosit = {3, 2, 1};
t2 = Transpose[t, axisPosit]
g2 = Part[g, axisPosit]
o2 = Part[o, axisPosit]
f2 = ListInterpolation[t2, g2, InterpolationOrder -> o2]
Again, no problems on evaluation. and
Dimensions[t2]==Map[Length,g2]
Trying all permutations of {1,2,3},... we see that the Dimensions and
Lengths do not always agree (and the corresponding ListInterpolation
must fail)
Map[{#,
Dimensions[t2 = Transpose[t, #]] == Map[Length, g2 = Part[g,
#]],
Head[ListInterpolation[t2, g2]] === InterpolatingFunction} &,
Permutations[Range[3]]] // MatrixForm
I think all of these cases should always be True. Is there a bug in
Transpose or am I confused?
I am trying to generalize Transpose to work on InterpolatingFunctions
including those where an N1-D InterpolatingFunction has data for only
N2-D dimensional hyperplanes where (0<=N2<=N1) (ie. where elements in
the list lens above can be =1). The function would be
myTranspose[ InterpolatingFunction, {n1, n2, ...} ]
I intend to check that Sort[{n1, n2, ...}]==Range[N1]
Does anyone have any advice on how to accomplish this?
Thanks in advance!