Resize

Возвращает новую матрицу указанной формы и размера.

bool matrix::Resize(
  const ulong  rows,     // 
  const ulong  cols,     // новое количество столбцов
  const ulong  reserve=0 // зарезервированное количество элементов
   );
 
bool vector::Resize(
  const ulong  size,     // новый размер
  const ulong  reserve=0 // зарезервированное количество элементов
   );

Параметры

rows

[in]  Новое количество строк.

cols

[in]  Новое количество столбцов.

Возвращаемое значение

Возвращает true в случае успеха, иначе false.

Примечание

Матрица (или вектор) обрабатывается по месту. Никаких копий не создаётся. Можно задавать любые размеры, то есть rows_new*cols_new!=rows_old*cols_old. В отличие от Reshape матрица обрабатывается построчно. Если количество столбцов увеличивается, то значения "лишних" столбцов не определены. При увеличении количества строк значения элементов новых строк не определены. При уменьшении количества столбцов, каждая строка матрицы усекается.

Пример:

   matrix matrix_a={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
   Print("matrix_a\n",matrix_a);
   matrix_a.Resize(2,6);
   Print("Ressize(2,6)\n",matrix_a);
   matrix_a.Resize(3,5);
   Print("Resize(3,5)\n",matrix_a);
   matrix_a.Resize(2,4);
   Print("Resize(2,4)\n",matrix_a);
 
   /*
   matrix_a
   [[1,2,3]
    [4,5,6]
    [7,8,9]
    [10,11,12]]
   Ressize(2,6)
   [[1,2,3,4,5,6]
    [4,5,6,10,11,12]]
   Resize(3,5)
   [[1,2,3,4,5]
    [4,5,6,10,11]
    [11,12,3,8,8]]
   Resize(2,4)
   [[1,2,3,4]
    [4,5,6,10]]
   */