Convert a vector to vector sequentially?
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2020-1-3
%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 个评论
更多回答(1 个)
Stephen23
2020-1-3
>> 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 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!