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?

回答(2 个)

Mohammad Sami
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

Stephen23
Stephen23 2021-3-16
Robust and reasonably efficient:
n = 3; % scale
a = 1:3
a = 1×3
1 2 3
a(2:n,:) = 0;
a = a(1:1-n+end)
a = 1×7
1 0 0 2 0 0 3

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by