Borrar filtros
Borrar filtros

how to shift arrays to the left

49 visualizaciones (últimos 30 días)
mary
mary el 30 de En. de 2013
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?

Respuesta aceptada

Matt J
Matt J el 30 de En. de 2013
circshift(a,[0,-1])
  2 comentarios
Matt J
Matt J el 30 de En. de 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 el 30 de En. de 2013
thanx indeed

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre NaNs en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by