You could add to the documentation that ```the length of "shift" should be equal to the rank of the array```, or a similar wording. This would implicitly clarify that a 2-dimensional array does not have each row shifted.
-erik On Thu, Oct 16, 2014 at 8:11 PM, Simon Kornblith <[email protected]> wrote: > As has been discussed here in the past, "dimension" may be an ambiguous > term. A matrix has two dimensions, so you're circularly shifting the first > dimension by 2 (which has no effect since the rows are identical) and the > second by 1 (which shifts [1 2 3 4 5] to [5 1 2 3 4]). There are no third, > fourth, or fifth dimensions, so those dimensions are not altered. > > If you want to circularly shift each row, you can do that with: > > shifts = [2, 1, 1, 1, 1] > d = similar(c) > for i = 1:size(c, 2) > d[i, :] = circshift(c[i, :], (0, shifts[i])) > end > > julia> d > 5x5 Array{Int64,2}: > 4 5 1 2 3 > 5 1 2 3 4 > 5 1 2 3 4 > 5 1 2 3 4 > 5 1 2 3 4 > > (This could also be done more efficiently with an explicit loop.) > > Simon > > > On Thursday, October 16, 2014 7:33:32 PM UTC-4, Arch Call wrote: >> >> I am trying to use this function little luck. >> >> ======== manual definition ======== >> circshift(A, shifts) >> Circularly shift the data in an array. The second argument is a vector >> giving the amount to shift in each dimension >> ============================== >> >> Sample script with test data >> ====================== >> module MyModule >> #-- attempting to use circshift to rearrange columns >> numrows = 5 >> a1 = fill(1,numrows,1) >> a2 = fill(2,numrows,1) >> a3 = fill(3,numrows,1) >> a4 = fill(4,numrows,1) >> a5 = fill(5,numrows,1) >> c = hcat(a1,a2,a3,a4,a5) >> println(c) >> d = circshift(c,[2,1,1,1,1]) >> println(d) >> end >> >> I just cannot get my head around on how the shifts work for each >> dimension. >> >> Can anyone elaborate?...Thanks Archie >> >> Sample output >> ============ >> >> 5 1 2 3 4 >> 5 1 2 3 4 >> 5 1 2 3 4 >> 5 1 2 3 4 >> 5 1 2 3 4 >> >> > -- Erik Schnetter <[email protected]> http://www.perimeterinstitute.ca/personal/eschnetter/
