Допустим, у меня есть простой 2D-массив A:
A = [0.25 0.3; 0.1 0.5];
, и я хочу объединить третью строку с каждой поэлементной комбинацией следующих векторов:
B = 0:0.1:1;
C = 0:0.1:1;
для создания 121 уникальной матрицы. Например:
A_prime = [0.25 0.3; 0.1 0.5; 0 0];
будет одной из таких матриц.
Я бы хотел, по возможности, избежать использования явных циклов for и использовать для этого либо arrayfun, либо cellfun.
Я знаю, что meshgrid предоставит все уникальные комбинации B и C, и я мог бы определить функцию для выполнения конкатенации A и элемента B, C соответственно. То есть:
[b_mesh, c_mesh] = meshgrid(B,C);
myfun = @(A,b,c) [A; b,c];
, но arrayfun приведет к ошибке:
arrayfun(myfun, A, b_mesh, c_mesh)
Error using arrayfun
All of the input arguments must be of the same size and shape.
Previous inputs had size 2 in dimension 1. Input #3 has size 11
, что имеет смысл. Итак, существует ли подобная реализация для генерации всех уникальных матриц, которая сохраняет согласованность размеров?
Другая идея, которая у меня была, заключается в том, чтобы потенциально генерировать матрицу большего размера, где каждая подматрица 3x3 - это 1 из уникальных матриц, которые я ищу для, а затем извлечь каждый при необходимости.
Спасибо!