Умножение матриц с использованием MATLAB - PullRequest
1 голос
/ 18 февраля 2011

Если у меня есть следующая матрица:

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]

Ответы [ 3 ]

5 голосов
/ 18 февраля 2011

Для этого bsxfun - это то, что вам нужно:

b = [a(:,1) bsxfun(@times,a(:,2:end),a(:,1))]

надеюсь, это поможет,

A.

3 голосов
/ 18 февраля 2011

Если вы действительно хотите создать матричное умножение, то что-то вроде:

b = [a(:,1), diag(a(:,1))*a(:,2:end)]

должно сработать (хотя прошло уже какое-то время с тех пор, как я сделал какой-нибудь matlab).

2 голосов
/ 18 февраля 2011
firstcol = a(:,1);
b = [firstcol, a(:,2:end) .* repmat(firstcol,1,size(a,2)-1)];

(Это действительно не та вещь, которую мы обычно называем векторным умножением или матричным умножением.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...