MATLAB索引 - 仅更改特定列中的非零元素

时间:2017-03-13 20:45:38

标签: matlab indexing

如何仅更改10x10阵列前5列的非零值?

2 个答案:

答案 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