Матричное умножение MATLAB

Так что, может быть, я обдумываю это и создаю беспорядок...

У меня есть орграф в MATLAB. Мне нужно изменить его на неориентированный граф, чтобы оценить его с минимальным связующим деревом (верно? Это не будет работать на орграфе). У меня есть матрица двоичных файлов nx1 (1 - уникальная, 0 - повторная), которые обозначают повторы, и моя матрица с узловым узлом имеет вес nx3. Кажется, мои направленные края одинаковы в обоих направлениях, поэтому изменение его на ненаправленное не должно иметь значения.

Как я могу использовать вектор столбцов двоичных файлов, чтобы обнулить все три столбца повторов в моей основной матрице, чтобы он показывал только ненаправленные ребра?

Кроме того, если есть другой подход, который мне не хватает, мне бы это понравилось!

1 ответ

Решение

Из вашего примера:

vect = [1;0;1]; % n x 1
mat  = [3 3 2; 5 4 1; 8 2 2]; % n x p

Первая идея

out = repmat(vect,1,size(mat,2)).*mat; 

Вторая идея

out = mat;
out(find(~vect),:) = 0;

Для MATLAB> = r2007a

(из комментария Криса Луенго)

out = bsxfun(@times,vect,mat)

Для MATLAB> = r2016b

(из комментария Криса Луенго)

out = mat.*vect
Другие вопросы по тегам