Move value at index i from one array to another array but at index 3 * i
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(2 个)
Mohammad Sami
2021-3-16
编辑:Mohammad Sami
2021-3-16
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 个评论
Stephen23
2021-3-16
Robust and reasonably efficient:
n = 3; % scale
a = 1:3
a(2:n,:) = 0;
a = a(1:1-n+end)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!