2013-03-06 2 views
0

я нашел соответствующий вопрос: Multiply columns of a matrix with 2d matrix slices of a 3d matrix in MatLabКак сделать (m, n, k) * (n, k) = (m, k) в matlab?

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

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

+0

Я запутался, какая буква означает, что. Итак, у вас есть массив ячеек элементов 'k', содержащий матрицы разных размеров и одинаково длинный массив ячеек векторов, длина которых соответствует размеру соответствующей матрицы по второму размеру? –

ответ

1

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

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