Move value at index i from one array to another array but at index 3 * i
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I am trying to take an array [1 2 3] and scale the indices of each of the elements by three. So, as a result, I am hoping to have [1 0 0 2 0 0 3]. So far, I am using a for loop:
ytemp = zeros(length(input), 1);
for idx = 1:length(y_fft)
ytemp(idx * 3) = y_fft(idx);
end
Is there a better way to do this?
0 comentarios
Respuestas (2)
Mohammad Sami
el 16 de Mzo. de 2021
Editada: Mohammad Sami
el 16 de Mzo. de 2021
You can also do it this way.
a = [1 2 3];
b = [a; zeros(2,size(a,2))];
c = reshape(b,1,[]);
c(end-1:end) = [];
or as follows
a = [1 2 3];
c(1:3:(3*length(a))) = a
0 comentarios
Stephen23
el 16 de Mzo. de 2021
Robust and reasonably efficient:
n = 3; % scale
a = 1:3
a(2:n,:) = 0;
a = a(1:1-n+end)
0 comentarios
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!