使用行向量来更新矩阵中的值

时间:2014-09-28 07:44:26

标签: octave vectorization linear

我有std function生成的矩阵和行向量:

X = [1 2 3; 4 5 6];
sigma = std(X);

现在我想要一个矢量化解决方案,通过将值除以sigma中的正确值来更新X中的每个值。它看起来像这样:

X(1,1)/sigma(1)
X(1,2)/sigma(2)
X(1,3)/sigma(3)
X(2,1)/sigma(1)
X(2,2)/sigma(2)
X(2,3)/sigma(3)

2 个答案:

答案 0 :(得分:2)

只需展开sigma并使用elementwise division

Y = X ./ repmat (sigma, rows (X), 1)
Y =

   0.47140   0.94281   1.41421
   1.88562   2.35702   2.82843

答案 1 :(得分:0)

更优雅的解决方案是使用bsxfun,它比repmat更快更干净。 该主题已被广泛涵盖here

> bsxfun(@rdivide,X,sigma)
ans =

   0.47140   0.94281   1.41421
   1.88562   2.35702   2.82843