概述
冈瑟已经走上了正轨.您想要选择一个元素if
>非零的行cumsum是1 AND
>非零的列cumsum是1 AND
>元素本身不为零.
以下代码解决了这个问题:
A = [0, 0, 3, 4;
4, 3, 2, 0;
2, 0, 2, 0];
batches = cell(0);
while any(A(:)~=0)
selector = cumsum(A~=0, 1) .* cumsum(A~=0, 2) .* (A~=0) == 1;
batches{end+1} = A .* selector;
A(selector) = 0;
end
但请注意,返回的解决方案并非最佳,因为它的第二批是
0 0 0 4
0 3 0 0
2 0 0 0
这意味着剩余的矩阵元素来自同一列:
0 0 0 0
0 0 2 0
0 0 2 0
不幸的是,你无法在同一批次中绘制它们.所以你最终只有四批而不是三批.
编辑:可能首先选择那些出现在具有大量非零的行/列中的元素是个好主意.例如,可以使用这些权重
weight = repmat(sum(A~=0, 1), size(A, 1), 1) ...
.* repmat(sum(A~=0, 2), 1, size(A, 2)) .* (A~=0)
weight =
0 0 6 2
6 3 9 0
4 0 6 0
以下算法
bat
最后
以上就是勤奋雪糕为你收集整理的matlab取矩阵元素的模,matlab – 提取矩阵元素的全部内容,希望文章能够帮你解决matlab取矩阵元素的模,matlab – 提取矩阵元素所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复