选择并更改索引未返回的矩阵中元素的值

  • 本文关键字:元素 返回 索引 选择 matlab
  • 更新时间 :
  • 英文 :


我想使用a(~idx)来更改indcies未返回的元素的值,如本例所示,但它不起作用。如何更改idx未返回的所有元素的值?

a=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]   %4x4 matrix
idx = sub2ind(size(a), [2 3 4], [1 2 4])     %select indcies 
a(idx)=10                                    %Change values for selected indcies
a(~idx)=0                                    %Change values for not selected indcies

这是输出,与a(idx)=10的预期一样,但与a(~idx)=0的预期不同

a =
1     2     3     4
5     6     7     8
9    10    11    12
13    14    15    16
idx =
2     7    16
a =
1     2     3     4
100     6     7     8
9   100    11    12
13    14    15   100
a =
1     2     3     4
100     6     7     8
9   100    11    12
13    14    15   100

a(~idx)语法仅在idx是逻辑数组时有效。

通过先将所有值设置为0,然后将所选值设置为10:,可以更容易地解决您的特定情况

a(:) = 0;
a(idx) = 10;

对于想要在idx中保留原始值的情况,如下面注释中所建议的,请首先创建一个临时数组:

b = zeros(size(a));
b(idx) = a(idx);
a = b;

相关内容

  • 没有找到相关文章

最新更新