矢量化matlab列标准化

Tim*_*Tim 3 matlab normalization vectorization

我想对每列的矩阵进行标准化.我现在有这个代码工作正常:

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
Run Code Online (Sandbox Code Playgroud)

但是,由于我的矩阵会更大,大约10k乘60k循环将需要永远.我怎么能矢量化我的代码?我曾想过使用Matlab,normc但这与我的代码不一样.

H.M*_*ter 5

您可以使用 bsxfun

A = randn(10,3)

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

bsxfun(@minus, A, minA ./ abs(maxA - minA))
Run Code Online (Sandbox Code Playgroud)

但是,我不太了解你的正常化.不是一个人宁愿使用

(A(:,i) - minA(i)) ./ (maxA(i) - minA(i))
Run Code Online (Sandbox Code Playgroud)

规范化?如果是这样,bsxfun声明应为:

bsxfun(@times, bsxfun(@minus, A, minA), 1./abs(maxA - minA))
Run Code Online (Sandbox Code Playgroud)