# onedtond

Converts a one-dimensional array to a multi-dimensional array.

## Prototype

function onedtond ( val , dims : integer or long ) return_val [dims] :typeof(val)

## Arguments

*val*

A one-dimensional array of any type.

*dims*

A one-dimensional array of positive values that represent the desired output dimensionality.

## Description

This function converts any one-dimensional array to a multi-dimensional array. If the product of the output dimension sizes is less than the number of elements in the input array, a warning is printed, but the output array is filled with as many values from the input as will fit. If the product of the output dimension sizes is greater than the input size, then the input is repeatedly copied as many times as will fit. If the fit is uneven, an error message is printed.

As of version 6.0.0, this
function allows "long" input for the *dims* argument, which
potentially allows you to have values greater than or equal to 2
gigabytes (GB) on a 64-bit system.

## See Also

## Examples

**Example 1**

a = (/1,2,3,4,5,6,7,8/) ; ; Basic case where input and output have same number of elements ; a0 =onedtond(a,(/2,4/)) ; ; Case where there are twice the number of elements in the output ; as the input. In this case the values ofaare copied twice ; a1 =onedtond(a,(/2,8/)) ; ; Case where there are half the number of elements in the output ; as the input. In this case only the first four values ofa; are copied to the output. ; The following case generates a WARNING. ; a2 =onedtond(a,(/2,2/)) ; ; Case where there are more elements in output than input but ; number_output % number_input is not 0 ; The following case generates a WARNING. ; a3 =onedtond(a,(/2,7/))

**Example 2**

Consider x(ntim,nlat,mlon). Here the 'ntim' dumension contains monthly data for multiple years. Let's say that you want to create a new arrays that contain just January, February, March values.

nyears = ntim/12 x1d =Further, lets say that the January, Feb, December are desired or March, July, October, November:ndtooned(x) x4d =onedtond(x1d,(/nyears,12,nlat,nlon/)) ; The above two lines can also be written as one line: ; x4d =onedtond(ndtooned(x),(/nyears,12,nlat,nlon/)) x_jfm = x4d(:,0:2,:,:) ; now subscript the second dimension for the desired months you want:

x_djf = x4d(:,(/0,1,11/),:,:) x_mjon = x4d(:,(/2,6,9,10/),:,:)