Matrix column selection based on vector with indices
显示 更早的评论
Hi all. I have a matrix of size m x n, with all entries as one at initialization. I also have a vector of size 1 x m. Each element is supposed to be between 1 and n, and the corresponding matrix entries are set to 0 (i.e. in the m-th matrix row, this is the column given by the m-th element of the vector). The code for that:
mask(sub2ind(size(mask),(1:numel(vector.'))',vector.')) = 0;
However, due to some modifications I had to make to the code, some elements of the vector can now take a value of 0, i.e. an invalid index. I would simply like to skip those elements. How can I do that?
采纳的回答
更多回答(1 个)
David Hill
2022-10-10
Why not just a simple loop?
k=ones(10,14);
v=randi(size(k,2),1,size(k,1));
for j=1:size(k,1)
k(j,v(j))=0;
end
2 个评论
According to the OP, there can be zeros in the v-vector:
k=ones(3,5);
v=randi(size(k,2),1,size(k,1));
v(end) = 0;
for j=1:size(k,1)
if v(j) > 0
k(j,v(j))=0;
end
end
v
k
Dominik Rhiem
2022-10-11
类别
在 帮助中心 和 File Exchange 中查找有关 Matrix Computations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!