这在Matlab:x=x(:,N)中意味着什么



我在其他代码中看到过这一点,无法理解这意味着什么x=x(: , N),其中x是2D阵列,N是1D阵列

以下是的一些例子

test = [1,2;3,4];
ttt = [1,1,1,1 ,2,2,2,2];
test = test(:,ttt);

结果是:

1   1   1   1   2   2   2   2
3   3   3   3   4   4   4   4

test = [1,2;3,4];
ttt = [1,1,1,1 ,1,1,1,1];
test = test(:,ttt);

结果是:

1   1   1   1   1   1   1   1
3   3   3   3   3   3   3   3

谢谢!

test(:,ttt)表示:从矩阵test取所有行(:(,列由ttt表示。

因此,在第一个示例(ttt = [1,1,1,1,2,2,2,2](中,您将test的第一列取四次,然后将第二列取四倍。在第二个示例(ttt = [1,1,1,1,1,1,1,1](中,您将test的第一列取八次。

有关Matlab中索引的更多信息,请参阅此处。

符号x(:, N)主要用于索引x中由N给出的特定列,如中的列

>> x = zeros(3, 3);
>> x(:) = 1:9;
>> N = [1 3];
>> x(:, N)
ans =
     1     7
     2     8
     3     9

这里:x中的所有行进行索引,并且N用于对x中的列13进行索引。你的例子就是这方面的延伸。

因此,在下一个示例中,因为1发生多次,所以每次发生时都会对x的该列进行索引(并返回(。因此,为什么我们看到包含13的第一列4次。

>> x = [1 2; 3 4]
x =
     1     2
     3     4
>> N = [1 1 1 1];
>> x(:, N)
ans =
     1     1     1     1
     3     3     3     3

您问题中的最后一个例子是它的另一个扩展,只是这次我们在N中也有2,所以我们看到了复制了24的第二列。

>> x = [1 2; 3 4]
x =
     1     2
     3     4
>> N = [1 1 1 1 2 2 2 2];
>> x(:, N)
ans =
     1     1     1     1     2     2     2     2
     3     3     3     3     4     4     4     4

接下来,当我们添加=时,我们将x(:, N)的输出分配给x,覆盖之前在中的内容

>> x = x(:, N)
ans =
     1     1     1     1     2     2     2     2
     3     3     3     3     4     4     4     4

相关内容

  • 没有找到相关文章