【问题标题】:What does this mean in Matlab: x=x(: , N)这在 Matlab 中是什么意思:x=x(: , N)
【发布时间】:2015-09-26 03:29:40
【问题描述】:

我在其他代码中看到了这一点,无法理解这是什么意思 x=x(: , N) 其中 x 是二维数组,N 是一维数组

这里有一些例子

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

谢谢!

【问题讨论】:

标签: arrays matlab matrix multidimensional-array


【解决方案1】:

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 中的索引的更多信息,请参阅here

【讨论】:

  • 啊!又被打了!总有一天我会放弃的!
【解决方案2】:

符号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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2019-04-24
    • 2020-03-18
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多