【发布时间】:2017-03-13 20:45:37
【问题描述】:
如何仅更改 10x10 数组的前 5 列的非零值?
【问题讨论】:
如何仅更改 10x10 数组的前 5 列的非零值?
【问题讨论】:
第一种选择是选择要更改的列并使用二进制索引:
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
【讨论】:
我看到你已经接受了正确的答案,所以我将只为文档添加一个带有一行和一个变量的解决方案,如果有人会觉得它更舒服:
A((A(:,1:5))~=0)=10
编辑:
对于@m7913d 评论,列 n1 到 n2 的更通用解决方案可以是-
A((n1-1)*size(A,1)+find(A(:,n1:n2)~=0))=10
【讨论】: