我有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