## how to shift arrays to the left

on 30 Jan 2013

### Matt J (view profile)

if i have

a=[0 0 0 0 0 0 0 0]

a(1,8)=5;

shifting a will results in :

a=[0 0 0 0 0 0 5 0]

how can i do that?

## Products

No products are associated with this question.

### Matt J (view profile)

on 30 Jan 2013

```circshift(a,[0,-1])
```

Matt J

### Matt J (view profile)

on 30 Jan 2013

If you always want the vacated edge of the matrix to be filled with zeros, you can use my noncircshift utility with the same syntax

```function [B,src_indices,dest_indices]=noncircshift(A,offsets)
%Like circshift, but shifts are not circulant. Missing data are filled with
%zeros.
%
%  [B,src_indices,dest_indices]=noncirchift(A,offsets)
%
%B is the resulting array and the other outputs are such that
%
%  B(dest_indices{:})=A(src_indices{:})
```
```siz=size(A);
N=length(siz);
```
```if length(offsets)<N
offsets(N)=0;
end
```
```B=zeros(siz);
```
```indices=cell(3,N);
```
```for ii=1:N
```
`      for ss=[1,3]`
`       idx=(1:siz(ii))+(ss-2)*offsets(ii);`
```        idx(idx<1)=[];
idx(idx>siz(ii))=[];```
`       indices{ss,ii}=idx;`
```      end
end```
```src_indices=indices(1,:);
dest_indices=indices(3,:);
```
```B(dest_indices{:})=A(src_indices{:});
```
mary

### mary (view profile)

on 30 Jan 2013

thanx indeed

#### Join the 15-year community celebration.

Play games and win prizes!

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi