escribí una función MATLAB que está en el sitio de Intercambio de Archivos (Interleave Vectors or Matrices) que hace exactamente lo que quiere y más. Simplemente descargue el archivo .m y coloque el archivo en el mismo directorio que sus otros archivos .m, o copie y pegue la función en su programa.
Esta función intercala cualquier cantidad de vectores o matrices por fila o columna. Si la entrada es solo un vector, no es necesario especificar la orientación. Los elementos adicionales/filas/columnas se agregan al final de la matriz de salida. Las otras respuestas proporcionadas son muy específicas para vectores de igual longitud o requieren asegurarse de que la orientación de los vectores sea correcta.
Ejemplos de cómo utilizar la función:
1) intercalación filas de matrices
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) Intercalación columnas de matrices
C = interleave2(A, B, 'col')
C = [1 5 2 6
3 7 4 8]
3) intercalado de vectores (Nota: de entrada los vectores no necesitan tener la misma orientación)
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) de entrelazado> 2 matrices
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) de intercalado columnas de 2 matrices con columnas desiguales
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) intercalado> 2 vectores de longitudes desiguales
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]
Para garantizar que sea un vector de fila, puede escribir ' nums (:) '' – Jonas
¡La solución' reshape' es muy elegante! – Anael