Alternation without for loop
조회 수: 1(최근 30일)
표시 이전 댓글
I have 2 vectors that I want to alternate
A = [1 2 3 4 5 6 7 8 9 10]
B = [0.5 0.2 0.4 0.8 0.9]
I would like to have the following output (preferably without for loop)
Output = [1 0.5 2 0.2 3 0.4 4 0.8 5 0.9 6 7 8 9 10]
How to do this?
Thanks!
댓글 수: 0
답변(3개)
Stephen23
2019년 10월 15일
편집: Stephen23
2019년 10월 15일
>> N = min(numel(A),numel(B));
>> V = [reshape([A(1:N);B(1:N)],1,[]),A(N+1:end),B(N+1:end)]
V =
1 0.5 2 0.2 3 0.4 4 0.8 5 0.9 6 7 8 9 10
댓글 수: 1
J. Alex Lee
2019년 10월 15일
nice...i like when i didn't see the obvious complete opposite path...and i learned a new thing with the empty argument for reshape
Jos (10584)
2019년 10월 15일
% a sorting trick
A = [1 2 3 4 5 6 7 8 9 10]
B = [0.5 0.2 0.4 0.8 0.9]
C = [A B] ;
[~,ix] = sort([1:numel(A) 1:numel(B)])
C = C(ix)
댓글 수: 0
J. Alex Lee
2019년 10월 15일
Here's a possibility: if A and B were guaranteed to be the same length (your example is not) and row vectors, you could do
N = length(A)
Output = reshape([A(:),B(:)]',2*N,1)
If not same length, you can nan-pad the shorter vector and remove later.
댓글 수: 0
참고 항목
범주
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!