substitute every n elements of a vector
1 view (last 30 days)
Show older comments
simone clochiatti
on 30 Aug 2015
Answered: Szilárd Ecsenyi
on 22 Jul 2021
Hi, I have a vector lets say 24 elements (zeros), and I want to substitute a vector of ones (lets say in this example a vector of two ones) n times (lets say 4 times in this example) starting from an index of the original vector decided by me, examples:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (original vector)
1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 (here substituted 4 times a vector of 2 ones starting form index 1)
0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 (here substituted 4 times a vector of 2 ones starting form index 3)
Is it possible to do simply something like this (possibly without a for)? just having the vector and deciding how many times substitute it, and the index to start? Thank you so much.
0 Comments
Accepted Answer
Stephen23
on 31 Aug 2015
Edited: Stephen23
on 31 Aug 2015
It may be that using a loop is actually faster than other solutions, and less obfuscated:
num = 3; % start index
stp = 6; % step size
vec = [1,2,3]; % vector
out = zeros(1,24)
for k = 1:numel(vec)
out(num+k-1:stp:end) = vec(k);
end
out
Displays this in the command window:
>> temp
out =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
out =
0 0 1 2 3 0 0 0 1 2 3 0 0 0 1 2 3 0 0 0 1 2 3 0
More Answers (1)
Szilárd Ecsenyi
on 22 Jul 2021
more faster:
v = 0:1:23;
v(rem(fix(v/3),2) == 0) = 0;
v(v~=0) = 1;
0 Comments
See Also
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!