substitute every n elements of a vector

3 ビュー (過去 30 日間)
simone clochiatti
simone clochiatti 2015 年 8 月 30 日
回答済み: Szilárd Ecsenyi 2021 年 7 月 22 日
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.

採用された回答

Stephen23
Stephen23 2015 年 8 月 31 日
編集済み: Stephen23 2015 年 8 月 31 日
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
  1 件のコメント
simone clochiatti
simone clochiatti 2015 年 8 月 31 日
Thank you everyone for the help, but this is the solution that works for me! Thank you very very much Stephen!!

サインインしてコメントする。

その他の回答 (1 件)

Szilárd Ecsenyi
Szilárd Ecsenyi 2021 年 7 月 22 日
more faster:
v = 0:1:23;
v(rem(fix(v/3),2) == 0) = 0;
v(v~=0) = 1;

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by