Если у меня есть следующая матрица:
a=[10 1 0 1 1 50 1 0 0 0 60 0 0 0 1]
как мне умножить первый столбец в матрице [10 50 60] 'как векторное умножение на остальную часть матрицы и получить следующее:
b=[10 10 0 10 10 50 50 0 0 0 60 0 0 0 60]
Для этого bsxfun - это то, что вам нужно:
bsxfun
b = [a(:,1) bsxfun(@times,a(:,2:end),a(:,1))]
надеюсь, это поможет,
A.
Если вы действительно хотите создать матричное умножение, то что-то вроде:
b = [a(:,1), diag(a(:,1))*a(:,2:end)]
должно сработать (хотя прошло уже какое-то время с тех пор, как я сделал какой-нибудь matlab).
firstcol = a(:,1); b = [firstcol, a(:,2:end) .* repmat(firstcol,1,size(a,2)-1)];
(Это действительно не та вещь, которую мы обычно называем векторным умножением или матричным умножением.)