Construct a vector from another, but add 2 values every 10 iteration

Hello !
I would like to create a vector B from a vector A, and at every 10th iteration, implement 2 times the same value from A:
A = linspace(0,1,811);
B = [];
for i = 1:1:length(A)
if mod(i,10) ~= 0
B = [B,A(1,i)];
elseif mod(i,10) == 0
added_value = A(1,i);
B = [B,added_value,added_value];
end
end
I know the length of the vector B should be around 901. I should have 90 "added_values", but when I verify it I have almost 1000 of them.
And it seems at every iteration the "if" condition just skips to the "elseif" part... What should I do to make this work ? I can't think of any other method...
Thanks in advance !

 Réponse acceptée

Try this:
npts = 811;
A = linspace(0,1,npts);
numAdded = sum(mod(1:npts,10) == 0);
B = zeros(1,numAdded+npts);
k = 0;
for i = 1:1:npts
k = k + 1;
B(k) = A(1,i);
if mod(i,10) == 0
k = k + 1;
B(k) = A(1,i);
end
end
% another way to do it...
npts = 811;
A = linspace(0,1,npts);
idx = 1:npts;
idxRepeat = find(mod(1:npts,10) == 0);
idxA2B = sort([idx idxRepeat]);
B = A(idxA2B);

1 commentaire

You just solved 2 days of intense failures, I can't thank you enough !!!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Performance and Memory dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by