XYZtoMatrix

I am having an issue when using XYZtoMatrix.

I have and X, Y, X data set which is complete (i.e. doesn't require interpolation) and I just want to put it in a grid however when I use the XYZtoMatrix it does not seem to scale correctly.

Not sure what I am doing wrong.

Thanks for any help.

Matthew

Experiment_10.pxp (43.75 KB)
Your XYZ triplets are in an unusual order- they describe a serpentine pattern rather than a raster scan. That is, the X values start low and go up, then from there start high and go down, etc. The usual way to make gridded XYZ triplets into a matrix is simply to redimension the Z values into the appropriately dimensioned matrix. For your data (a 25x25 matrix):
Duplicate/O zwave, matrix2
redimension/N=(25,25) matrix2

Now every other column is in the reverse order. So I wrote this little function to reverse the order of every other column:
Function ReverseOddColumns(Wave w)
    Variable nrows = DimSize(w, 0)
    Variable ncols = DimSize(w, 1)
    Make/N=(nrows)/FREE temp
    Variable i
    for (i = 1; i < ncols; i+=2)
        temp = w[p][i]
        w[][i] = temp[nrows-p-1]
    endfor
end

Invoke the function on our matrix:
•ReverseOddColumns(matrix2)

To reflect the increment in X and Y values, set the scaling of the matrix:
SetScale/I y 1.25, -1.25, matrix2
SetScale/I x -1.25, 1.25, matrix2

Note that the Y scaling is reversed, to reflect another oddity of your data set: the Y values start high and go down. We could reverse the order of the columns instead, if that were advantageous.

John Weeks
WaveMetrics, Inc.
support@wavemetrics.com
Thanks. I thought the odd data collection order might have been the issue. Matthew