Move value at index i from one array to another array but at index 3 * i
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (2)
Mohammad Sami
le 16 Mar 2021
Modifié(e) : Mohammad Sami
le 16 Mar 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 commentaires
Stephen23
le 16 Mar 2021
Robust and reasonably efficient:
n = 3; % scale
a = 1:3
a(2:n,:) = 0;
a = a(1:1-n+end)
0 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!