Convert a vector to vector sequentially?

1 visualización (últimos 30 días)
Nguyen Trong Nhan
Nguyen Trong Nhan el 3 de En. de 2020
Respondida: Walter Roberson el 3 de En. de 2020
I have 2 vector: init = [1 2 3 4], final =[5 6 7 8]. I would like to genertate all the vector like the following:
[1 2 3 4] [5 2 3 4] [5 6 3 4] [5 6 7 4] [5 6 7 8]. Is there anyway to do this fast using some special function available in matlab?

Respuesta aceptada

Walter Roberson
Walter Roberson el 3 de En. de 2020
%assuming init and final are the same size!!
init = [1 2 3 4];
final =[5 6 7 8];
output = repmat(init(:), 1, length(init));
toutput = repmat(final(:), 1, length(init));
mask = triu(true(size(output)),1);
output(mask) = toutput(mask);
And now the outputs are down the columns. If you really want vectors,
num2cell(output,1)

Más respuestas (1)

Stephen23
Stephen23 el 3 de En. de 2020
>> init = [1 2 3 4]
>> final = [5 6 7 8]
>> X = triu(ones(5,4));
>> M = init.*X + final.*~X
M =
1 2 3 4
5 2 3 4
5 6 3 4
5 6 7 4
5 6 7 8

Categorías

Más información sobre Numeric Types en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by