Можно ли создать массив векторов в MATLAB? - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно сделать al oop, в котором мне нужно добавить значение в конце вектора, поэтому каждый раз, когда мне нужно использовать (end+1), но мне нужно сделать это несколько раз, и я не хочу сделать для этого много таблиц. Таким образом, мне нужен массив векторов, например, в С ++. В С ++ u используйте, например, просто [1][2], чтобы добраться до этого, и это нормально, но я не знаю, как это сделать в MATLAB. Я не могу просто создать матрицу stati c, потому что мои точки генерируются, пока истинно l oop, и я рисую графики в реальном времени. Я пробовал что-то вроде этого:

tab = [4, []];

, но это не работает. Любые идеи? Спасибо

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Насколько мне известно, с подобными ситуациями трудно справиться в Matlab. У вас может быть массив вершин, так как внутренние вершины имеют одинаковый размер, иначе вы получите ошибку:

>> a = [2];
>> b = [2,3,4]
b =
     2     3     4
>> c = [a;b]
Error using vertcat
Dimensions of arrays being concatenated are not consistent. 

Теперь, если a имеет тот же размер, o b. ..:

>> a = [2,2,3];
% with ; be is put in a new row
>> c = [a;b]
c =
     2     2     3
     2     3     4
% using , or space the concatenation is horizontal
>> c = [a,b]
c =
     2     2     3     2     3     4
>> c = [a b]
c =
     2     2     3     2     3     4

Если вы хотите просто добавить значения к c, просто выполните:

>> c = [c 9]
c =
     2     2     3     2     3     4     9

Я рекомендую вам использовать структуру cell, если это возможно. Вам необходимо предварительно определить массив cell, но он может хранить несколько векторов разных размеров:

>> cell1 = cell(2)
cell1 =
  2×2 cell array
    {0×0 double}    {0×0 double}
    {0×0 double}    {0×0 double}
>> cell1{1} = c
cell1 =
  2×2 cell array
    {1×7 double}    {0×0 double}
    {0×0 double}    {0×0 double}
>> cell1{2} = a
cell1 =
  2×2 cell array
    {1×7 double}    {0×0 double}
    {1×3 double}    {0×0 double}
>> cell1{2}
ans =
     2     2     3

Надеюсь, это поможет вам ...

0 голосов
/ 27 мая 2020

Альтернативой массивам ячеек является использование массивов структур. Например, вы можете определить

a = [2];
b = [2,3,4]
c = [b;b]
d = [a,b]

, а затем настроить структуру, как показано ниже. Отменяет работу с фигурными скобками

myStruct = struct()
myStruct(1).myVector = a
myStruct(2).myVector = b
myStruct(1).myVector2 = c
myStruct(2).myVector2 = d

Затем r_b и r_c ниже «вытащить» b и c

r_b = myStruct(2).myVector
r_c = myStruct(1).myVector2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...