При использовании фигурных скобок {}
вы являетесь , выбирая значениями ячеек. Используйте обычные скобки ()
, чтобы обратиться к набору ячеек и, следовательно, хранить ячейки без извлечения фактического содержимого. Таким образом, следующая строка будет назначать клетки (а не значения внутри клеток) с правой стороны к левой стороне:
c1(1:3) = v1(1:3)
Мы можем проверить тип данных c1(1:3)
легко увидеть, что на самом деле клетки -array:
>> A = c1(1:3)
A =
[1] [2] [3]
>> class(A)
ans =
cell
Чтобы увидеть, что фигурные скобки {}
извлечь значения себя, мы можем сделать следующее и посмотрите, что тип данных B
является двойной:
>> B = c1{1}
B =
1
>> class(B)
ans =
double
Как @Dan упоминает в своем комментарии, v1{1:3}
дает вам comma-separated list трех отдельных дублей. Вы можете заметить, что, рассматривая три ans =
с помощью командной строки, так как все значения будут возвращены по отдельности:
>> v1{1:3}
ans =
1
ans =
2
ans =
3
После этого, вы можете выполнить задание по-другому, что я не рекомендую. Ниже приведены три элемента LHS с помощью оператора конкатенации []
, RHS предоставляет три элемента, а также мы видели выше.
>> [c1{1:3}] = v1{1:3}
c1 =
[1] [2] [3] [7]
Просто добавить к этому, 'v1 {1: 3}' будет фактически возвращать список через запятую из трех отдельных дублей, так что вам нужно будет назначить его на три отдельные места на РИТАХ поэтому ошибка сообщение говорит, что он говорит. – Dan
@ Dan Я включил часть, касающуюся вас. – Matt