Move value at index i from one array to another array but at index 3 * i
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (2)
Mohammad Sami
am 16 Mär. 2021
Bearbeitet: Mohammad Sami
am 16 Mär. 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 Kommentare
Stephen23
am 16 Mär. 2021
Robust and reasonably efficient:
n = 3; % scale
a = 1:3
a(2:n,:) = 0;
a = a(1:1-n+end)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!