Construct a vector from another, but add 2 values every 10 iteration
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
V.D-C
el 11 de En. de 2020
Comentada: V.D-C
el 11 de En. de 2020
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 !
0 comentarios
Respuesta aceptada
Meg Noah
el 11 de En. de 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);
Más respuestas (0)
Ver también
Categorías
Más información sobre Elementary Math en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!