我想规范化每列的矩阵我现在有了一个很好的代码:

A = randn(10,3)

maxA = max(A,[],1)
minA = min(A,[],1)

for i=1:size(A,2)
    A(:,i) = (A(:,i) - minA(i) ./ (maxA(i) - minA(i))
end

不过,由于我的矩阵会大得多,大约10公里乘60公里的循环将永远需要我如何将代码矢量化?
我曾想过使用Matlab的normc,但这与我的代码不同。

最佳答案

您可以使用bsxfun

A = randn(10,3)

maxA = max(A,[],1)
minA = min(A,[],1)

bsxfun(@minus, A, minA ./ abs(maxA - minA))

但是,我不太理解你的正常化不会有人愿意用
(A(:,i) - minA(i)) ./ (maxA(i) - minA(i))

正常化如果是,则bsxfun语句应为:
bsxfun(@times, bsxfun(@minus, A, minA), 1./abs(maxA - minA))

关于matlab - 向量化Matlab列标准化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15875670/

10-09 03:35