是否有一种简单的方法将每个矩阵元素除以列总和?例如:
input: 1 4 4 10 output: 1/5 4/14 4/5 10/14
回答:
以下是执行此操作的不同方法的列表...
- ...使用bsxfun :
B = bsxfun(@rdivide,A,sum(A));
- ...使用repmat :
B = A./repmat(sum(A),size(A,1),1);
- ...使用外部产品 (如Amro建议):
B = A./(ones(size(A,1),1)*sum(A));
- ...并使用for循环(如mtrw所建议):
B = A; columnSums = sum(B); for i = 1:numel(columnSums) B(:,i) = B(:,i)./columnSums(i); end
更新:
从MATLAB R2016b及更高版本开始,大多数内置二进制函数(可在
此处找到列表)支持隐式扩展,这意味着它们默认情况下具有
bsxfun的行为。因此,在最新的MATLAB版本中,您要做的就是:
B = A./sum(A);
更多&回答...