如何仅更改10x10阵列前5列的非零值?
答案 0 :(得分:2)
第一种方法是选择要更改的列并使用二进制索引:
A = round(rand(10, 10));
B = A(:, 1:5);
B(B ~= 0) = 10;
A(:, 1:5) = B
第二种方法是使用如下掩码:
A = round(rand(10, 10));
mask = zeros(size(A));
mask(:, 1:5) = 1;
A(A~=0 & mask) = 10
答案 1 :(得分:1)
我看到你已经接受了正确的答案,所以我将仅为文档添加一个包含一行和一个变量的解决方案,如果有人会觉得它更舒服:
A((A(:,1:5))~=0)=10
编辑:
对于@ m7913d注释,列n1到n2的更通用的解决方案可以是 -
A((n1-1)*size(A,1)+find(A(:,n1:n2)~=0))=10