Adding Zeroes and Ones into a Vector

1 vue (au cours des 30 derniers jours)
Hollis Williams
Hollis Williams le 19 Mai 2019
Modifié(e) : dpb le 22 Mai 2019
I have a 1x300 vector and would like to make it into a 1x400 vector by inserting a 0 after every third element, a 0 after every sixth element and a 1 after the ninth element and then after the twelfth element insert a 0 and repeat the pattern.
So for example if I have
0 0 1 0 1 0 1 0 0
this would become
0 0 1 0 0 1 0 0 1 0 0 1
and so on.

Réponse acceptée

dpb
dpb le 19 Mai 2019
Modifié(e) : dpb le 22 Mai 2019
>> v=reshape([reshape(v,[],3),[0 0 1].'].',1,[])
v =
0 0 1 0 0 1 0 0 1 0 0 1
>>
To generalize, repmat the augmentation vector as many times as needed.
>> v=reshape([reshape(v,[],3),repmat([0 0 1].',numel(v)/9,1)].',1,[])
v =
0 0 1 0 0 1 0 0 1 0 0 1
>>
ADDENDUM: To make the generalizaton more clear perhaps...
lenStr=3; % length prior to insertion point
vaug=[0 0 1].'; % the augmenting vector
lenAug=numel(vaug); % length of augmentation vector
v=reshape([reshape(v,[],lenStr),repmat(vaug,numel(v)/(lenStr*lenAug),1)].',1,[])
  6 commentaires
Hollis Williams
Hollis Williams le 21 Mai 2019
The code above didn't seem to give the desired result. Let's just simplify and say that I have a 1x108 vector and after every third vector I just went to inset a 1 so that I end up with a 1x144 vector, what would be the simple way of doing this?
dpb
dpb le 21 Mai 2019
Same logic works with the augmentation vector being only 1 element, too:
reshape([reshape(v,[],3) ones(108/3,1)].',1,[])
You just have to compute the repeat factor correctly dependent upon the length being added--how many rows does it add each time?
The above with the hardcoded '9' was specific for the original question of 3.

Connectez-vous pour commenter.

Plus de réponses (1)

Jos (10584)
Jos (10584) le 21 Mai 2019
Inserting elements at specific locations is not trivial. Years ago I wrote a function INSERTROWS that does this

Catégories

En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by