tôi đã viết một hàm MATLAB đó là trên trang web Trao đổi File (Interleave Vectors or Matrices) thực hiện chính xác những gì bạn muốn và nhiều hơn nữa. Chỉ cần tải xuống tệp .m và đặt tệp trong cùng thư mục với các tệp .m khác của bạn hoặc sao chép và dán hàm vào chương trình của bạn.
Hàm này xen kẽ bất kỳ số lượng vectơ hoặc ma trận nào theo hàng hoặc cột. Nếu đầu vào chỉ là vectơ, không cần chỉ định hướng. Các phần tử/hàng/cột bổ sung được thêm vào cuối ma trận đầu ra. Các câu trả lời khác được cung cấp là rất cụ thể cho các vectơ có chiều dài bằng nhau hoặc yêu cầu đảm bảo định hướng của vectơ là chính xác.
Ví dụ về cách sử dụng các chức năng:
1) hàng Interleaving của ma trận
A = [1 2; 3 4] B = [5 6;7 8]
C = interleave2(A, B, 'row')
C = [1 2
5 6
3 4
7 8]
2) Interleaving cột của ma trận
C = interleave2(A, B, 'col')
C = [1 5 2 6
3 7 4 8]
3) Interleaving vectơ (Lưu ý: đầu vào vectơ không cần phải định hướng giống nhau)
A = [1 2 3 4] B = [5 6 7 8 9]'
C = interleave2(A, B)
C = [1 5 2 6 3 7 4 8 9]'
4) Interleaving> 2 ma trận
A = [1 2;3 4] B = [5 6;7 8]
C = [9 10;11 12] D = [13 14;15 16]
E = interleave2(A, B, C, D, 'col')
E = [1 5 9 13 2 6 10 14
3 7 11 15 4 8 12 16]
5) Interleaving cột của 2 ma trận với các cột bất bình đẳng
A = [1 2;3 4]
B = [5 6 7 8;9 10 11 12]
C = interleave2(A, B, 'col')
C = [1 5 2 6 7 8
3 9 4 10 11 12]
6) Interleaving> 2 vectơ có độ dài bất bình đẳng
A = [1 2 3 4] B = [5 6 7]
C = [8 9 10 11 12 13]
D = interleave2(A, B, C)
D = [1 5 8 2 6 9 3 7 10 4 11 12 13]
Để đảm bảo nó là một vectơ hàng, bạn có thể viết ' nums (:) '' – Jonas
Giải pháp' reshape' rất thanh lịch! – Anael