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

5
>> A={1 2;2 3}

A = 

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

A =

     1     2
     2     3

我认为它们本质上是相同的东西吗?

1
相关的编程内容https://dev59.com/Q2ox5IYBdhLWcg3wqmBt - Salem Gharbi
1
可能是Matlab中cell和matrix的区别?的重复问题。 - D.W.
5个回答

11

{}表示单元格。 []表示数组/矩阵。


1
单元格和数组/矩阵有什么区别? - Gtker
5
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/br04bw6-98.html#br1xnp2-1 - Jacob

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

一个cell数组是一个通用的容器,可以在每个单元格中存储任何对象、任何Matlab变量。因此,我们可以创建一个由任意形状和大小的元素组成的cell数组。
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]

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

2

如果将其与面向对象编程相关联,cells {} 就像对象,[] 用于数组。


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 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接