Как сделать (m,n,k) * (n,k) = (m,k) в Matlab?

Я нашел этот актуальный вопрос: in-matlab">Умножение столбцов матрицы на фрагменты 2d-матрицы 3d-матрицы в MatLab

У меня та же проблема, но в моем случае m может меняться для каждого слайса. Есть ли способ сделать это с помощью mtimex ? Поскольку m меняется, мой трехмерный тензор хранится в виде списка ячеек, каждая из которых содержит матрицу. Также моя 2d-матрица представляет собой скорее список ячеек, каждая из которых содержит вектор.

Есть ли способ сделать это умножение без цикла for?


person siamii    schedule 06.03.2013    source источник
comment
Я запутался, какая буква что обозначает. Итак, у вас есть массив ячеек из k элементов, содержащий матрицы разных размеров, и такой же длинный массив ячеек из векторов, длина которых соответствует размеру соответствующей матрицы по второму измерению?   -  person arne.b    schedule 06.03.2013


Ответы (1)


Поскольку ваши данные уже хранятся в массивах ячеек, вы можете использовать cellfun

res = cellfun( @(x,y) x*y, mnkCell, nkCell, 'UniformOutput', false );
person Shai    schedule 06.03.2013