Проблема не в том, что размер матрицы изменяется внутри цикла. Это разрешено. Проблема заключается в том, что для вертикальной компоновки двух матриц каждая из них должна иметь одинаковое количество столбцов.
Представьте себе две матрицы:
A = [ a b c ;
d e f ;
g h i ]
B = [ q r;
s t ]
и вы пытаетесь выполнить:
C = [A;B]
какие размеры будет иметь C? Это не определено.
Вы можете добавить B к столбцу нулей (или чего-то еще), чтобы сделать его правильной ширины, чтобы C в конечном итоге выглядел так:
| a b c |
| d e f |
| g h i |
| q r 0 |
| s t 0 |
или
| a b c |
| d e f |
| g h i |
| 0 q r |
| 0 s t |
но это просто хак, чтобы заставить работать матричную укладку.
Если матрицы всегда имеют разную ширину, вам следует подумать о том, что вы на самом деле пытаетесь с ними сделать, и, возможно, подумать о хранении их внутри массива ячеек.