Матричное умножение 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