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但这与我的代码不一样.
您可以使用 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)