В чем разница между {} и [] в MATLAB? - PullRequest
5 голосов
/ 16 апреля 2010
>> A={1 2;2 3}

A = 

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

A =

     1     2
     2     3

Мне кажется, что это одно и то же?

Ответы [ 5 ]

11 голосов
/ 16 апреля 2010

{} для ячеек. [] для массивов / матриц.

8 голосов
/ 18 апреля 2010

[] является оператором, связанным с массивом. Массив может быть любого типа - массив чисел, массив символов (строка), массив структур или массив ячеек. Все элементы в массиве должны быть одного типа!

Пример: [1,2,3,4]

{} это тип. Представьте, что вы хотите поместить в массив элементы различного типа - число и строку. Это возможно с помощью хитрости - сначала поместите каждый элемент в контейнер {}, а затем создайте массив из этих контейнеров - массив ячеек.

Пример: [{1},{'Hallo'}] с сокращенной записью {1, 'Hallo'}

Нет необходимости помещать объекты одного типа (удваивается) в массив ячеек, как в вашем примере.

4 голосов
/ 17 апреля 2010

Нет. Они совсем не одно и то же. Единственный аспект, который является тем же самым, является получающейся формой.

Массив (тот, который вы строите с помощью []) - это то, что вы можете использовать для линейной алгебры. Одно число в каждом элементе.

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 голос
/ 24 марта 2019

Элементы разных типов данных, попадающие внутрь {}, становятся ячейками или элементами типа данных 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 
1 голос
/ 25 января 2014

Если вы связываете это с объектно-ориентированным программированием, ячейки {} похожи на объекты, а [] для массивов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...