Я не знаю, как индексировать столбцы так, как вы хотите.Это может быть быстрее, чем цикл for, но также создает матрицу y размером x.
x=[1 2 3;4 5 6;7 8 9];
w=[5 3 2];
y = x > repmat(w,size(x,1),1);
q = sum(x.*y) ./ sum(y)
Я не утверждаю, что это более лаконично.