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

1 Ansicht (letzte 30 Tage)
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 !

Akzeptierte Antwort

Meg Noah
Meg Noah am 11 Jan. 2020
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);

Weitere Antworten (0)

Kategorien

Mehr zu Elementary Math finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by