Borrar filtros
Borrar filtros

Insert a blank column every n columns

1 visualización (últimos 30 días)
Alessandro Innocenti
Alessandro Innocenti el 21 de Mzo. de 2013
Comentada: minhua su el 18 de Abr. de 2019
Hi. I have a matrix (size 10x360) and I want insert a blank column every n columns. How can I do? I have tried to use for loop, but unsuccessfully.
Thanks, Alessandro

Respuestas (5)

Carlos
Carlos el 21 de Mzo. de 2013
Editada: Carlos el 21 de Mzo. de 2013
Try this, if you want to insert a blank column every 5 columns
A=rand(10,360);
A=num2cell(A);
A(:,1:5:end)=cell(1);
  2 comentarios
Alessandro Innocenti
Alessandro Innocenti el 21 de Mzo. de 2013
It doesn't work...it deletes the column, it does not insert a blank column.
Carlos
Carlos el 21 de Mzo. de 2013
OK, I misunderstood your question, look at the file exchange function insertrows uploaded by Jos, that http://www.mathworks.com/matlabcentral/fileexchange/9984, that may do the job for you.

Iniciar sesión para comentar.


Peter
Peter el 21 de Mzo. de 2013
To insert columns with zeros you can try this:
A=rand(10,360);
n = 5;
nc = floor(360/n);
for c=1:nc;
B(:,(n*c+c-n):(n*c+c-1)) = A(:,(n*(c-1)+1):n*c);
end
If you need empty cells, you can convert your matrix to a cell array like Carlos showed before.

Andrei Bobrov
Andrei Bobrov el 21 de Mzo. de 2013
Editada: Andrei Bobrov el 22 de Mzo. de 2013
yourmatrix = randi(23,10,360);
n = 6;
yourmatrix(:,n:n:end) = nan;
or
a = randi(23,10,360);% your matrix
n = 5;
s = size(a);
k = floor(s(2)/n);
n1 = k*n;
out = [reshape([reshape(a(:,1:n1),s(1),k,[]),...
repmat(nan,[s(1),1,n])],s(1),[]),a(:,n1+1:end)];
or
a = randi(32,10,360);
n = 7;
out = zeros(s+[0 floor(s(2)/n)]);
out(:,n+1:n+1:end) = nan;
out(~isnan(out)) = a;

dinesh wankhede
dinesh wankhede el 18 de Feb. de 2017
i have matrix a with some rows and some columns i want matrix b with same number of rows but double the number of columns such that every column repeats itself

minhua su
minhua su el 18 de Abr. de 2019
this is how i solved the problem recently
str = strings([1,508*7])
i=[]
j=1
for i=1:508
str(j)=bamfiles(i)
j=j+7
end
  1 comentario
minhua su
minhua su el 18 de Abr. de 2019
bamfiles is my original matrix, which is (size 1X508), and i create a new matrix str (the size is decided by how many every columns you want to insert)

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements 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