Convert a vector to vector sequentially?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Nguyen Trong Nhan
le 3 Jan 2020
Réponse apportée : Walter Roberson
le 3 Jan 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?
0 commentaires
Réponse acceptée
Walter Roberson
le 3 Jan 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)
0 commentaires
Plus de réponses (1)
Stephen23
le 3 Jan 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
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!