我有一些二进制矩阵。我想从每列中删除所有第一个,但one
如果该值在列中单独存在,请保留。我有一些代码可以产生正确的结果,但看起来很难看——我应该遍历所有列。
你能给我一些建议如何改进我的代码吗?
非向量化代码:
% Dummy matrix for SE
M = 10^3;
N = 10^2;
ExampleMatrix = (rand(M,N)>0.9);
ExampleMatrix1=ExampleMatrix;
% Iterate columns
for iColumn = 1:size(ExampleMatrix,2)
idx = find(ExampleMatrix(:,iColumn)); % all nonzeroes elements
if numel(idx) > 1
% remove all ones except first
ExampleMatrix(idx(1),iColumn) = 0;
end
end