MATLAB中{}和[]之间有什么区别?

问题描述 投票:5回答:5
>> A={1 2;2 3}

A = 

    [1]    [2]
    [2]    [3]
>> A=[1 2;2 3]

A =

     1     2
     2     3

在我看来他们基本上是一回事吗?

matlab syntax
5个回答
11
投票

{}是针对细胞的。 []用于数组/矩阵。


8
投票

[]是一个与数组相关的运算符。数组可以是任何类型 - 数字数组,字符数组(字符串),结构数组或单元格数组。数组中的所有元素必须是相同的类型!

示例:[1,2,3,4]

{}是一种类型。想象一下,你想把不同类型的物品放入一个数组 - 一个数字和一个字符串。这可以通过一个技巧 - 首先将每个项目放入容器{},然后使用这些容器 - 单元阵列创建一个数组。

示例:[{1},{'Hallo'}]用简写符号{1, 'Hallo'}

没有必要将相同类型的对象(双精度数)放入单元数组中,就像在您的示例中一样。


4
投票

不,他们完全不是一回事。唯一的方面是产生的形状。

数组(用[]构建的数组)是可用于执行线性代数的数组。每个元素中有一个数字。

A = [1 2 3;4 5 6;7 8 9];
[3 5 7]*A*[2 3 5]'
ans =
   915

单元格数组是一个通用容器,它将保存任何对象,任何matlab变量完全在每个单元格中。因此,我们可以创建由任何形状和大小的元素组成的单元阵列。

C = {'The' 'quick' 'brown' 'fox' 'jumps' 'over' 'the' 'lazy' 'dog'};

C是一个包含9个元素的单元阵列。我们可以在那里放任何类变量。

C = {'asfghhrstyjtysj', 1:5, magic(4), sqrt(-1)}
C = 
    'asfghhrstyjtysj'    [1x5 double]    [4x4 double]    [0 +          1i]

我们甚至可以创建一个单元格数组,其中每个单元格只包含一个标量数字。但这样做没有任何意义,因为我们不能使用单元数组进行算术运算。


1
投票

如果将它与面向对象的编程联系起来,则单元格{}就像对象,[]用于数组


1
投票

进入{}的不同数据类型的元素成为数据类型cell的单元格或元素。 []中的元素保留其数据类型并生成该数据类型的数组。以下几个例子:

p = ['my', 'string'];
q = [int8(1), int8(2), int8(3)];
r = [0.11, 0.22, 0.33];
s = {'my', 'string'};
t = {1,2,3};
u = {0.11, 0.22, 0.33};
v = {int8(1), int8(2), int8(3)};

>> whos
  Name      Size            Bytes  Class     Attributes

  p         1x8                16  char                
  q         1x3                 3  int8                
  r         1x3                24  double              
  s         1x2               240  cell                
  t         1x3               360  cell                
  u         1x3               360  cell                
  v         1x3               339  cell 
© www.soinside.com 2019 - 2024. All rights reserved.