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
>
>
>

Reply via email to