Если вы хотите выложить набор из матриц способом HANKEL плиток значений , вот один из способов сделать это.Во-первых, вы можете поместить все свои уникальные матрицы в один массив ячеек:
mat = [1 0; 0 0];
cArray = {mat 2.*mat 3.*mat 4.*mat 5.*mat 6.*mat}; %# Your 6 unique matrices
Теперь, если вы хотите, чтобы первые 3 матрицы проходили по первому столбцу, а последние 4 матрицы проходили по последней строке, выможно создать индексную матрицу, используя HANKEL :
>> index = hankel(1:3,3:6);
index =
1 2 3 4
2 3 4 5
3 4 5 6
Затем индексируйте ваш массив ячеек с помощью index
и используйте CELL2MAT , чтобы преобразовать полученный массив ячеек в одну матрицу:
>> cell2mat(cArray(index))
ans =
1 0 2 0 3 0 4 0
0 0 0 0 0 0 0 0
2 0 3 0 4 0 5 0
0 0 0 0 0 0 0 0
3 0 4 0 5 0 6 0
0 0 0 0 0 0 0 0
Во второй части вашего вопроса, когда вы выполняете операцию индексирования, такую как A(X,Y)
, вы используете элементы X
в качестве индексов строк и элементов Y
в качестве индексов столбцов в A
. Используется каждая комбинация значений в X
и Y
.Так, если X = [x1 x2 x3 x4]
и Y = [y1 y2 y3 y4]
, то результат B = A(X,Y)
эквивалентен:
B = [A(x1,y1) A(x1,y2) A(x1,y3) A(x1,y4); ...
A(x2,y1) A(x2,y2) A(x2,y3) A(x2,y4); ...
A(x3,y1) A(x3,y2) A(x3,y3) A(x3,y4); ...
A(x4,y1) A(x4,y2) A(x4,y3) A(x4,y4)];