accumarray()的 val论点必须是一个向量.在我的情况下,我需要矩阵的列被求和(或平均).是否有功能或方法来实现这一目标?
我现在正在做的是for循环我分别对列值进行求和:
for iCol = 1:nCols
means(:,iCol) = accumarray(labels', X(:,iCol));
end
Run Code Online (Sandbox Code Playgroud) 在回答另一个,我偶然发现了这个问题其实我怎么能找到一个整数的所有因素,而不该符号数学工具箱.
例如:
factor(60)
Run Code Online (Sandbox Code Playgroud)
收益:
2 2 3 5
Run Code Online (Sandbox Code Playgroud)
unique(factor(60))
Run Code Online (Sandbox Code Playgroud)
因此会返回所有素数因子,"1"缺失.
2 3 5
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个可以返回所有因子的函数(1和数字本身并不重要,但它们会很好)
预期输出x = 60:
1 2 3 4 5 6 10 12 15 20 30 60
Run Code Online (Sandbox Code Playgroud)
我想出了那个相当庞大的解决方案,除了它可能是矢量化之外,是不是有任何优雅的解决方案?
x = 60;
P = perms(factor(x));
[n,m] = size(P);
Q = zeros(n,m);
for ii = 1:n
for jj = 1:m
Q(ii,jj) = prod(P(ii,1:jj));
end
end
factors = unique(Q(:))'
Run Code Online (Sandbox Code Playgroud)
我认为,这个解决方案对于某些大数字会失败,因为perms需要一个<11的向量长度.