Эта проблема возникла, когда я был answering this question. Он должен быть какой-то глупый ошибка, что я делаю, но я не могу получить то, что ошибка это ...Подзаголовок с ячейками
myMatrix = [22 33; 44 55]
Возвращает:
>> subsref(myMatrix, struct('type','()','subs',{{[1 2]}}));
ans =
22 44
При использовании его с клетками:
myCell = {2 3; 4 5}
Возврат:
>> subsref(myCell,struct('type','{}','subs',{{[1 2]}}));
ans =
2 % WHATTT?? Shouldn't this be 2 and 4 Matlab??
subsref
documentation, мы видим:
Посмотрите, как MATLAB вызывает subsref для выражения:
A {1: 2} Синтаксис A {1: 2} вызывает В = subsref (A, S), где S .type = '{}' и S.subs = {[1 2]}.
Это, похоже, не так, потому что возвращаемое значение subsref является только первым аргументом, а не всеми аргументами.
Тогда, если один делает:
>> [a,b]=subsref(myCell,struct('type','{}','subs',{{[1 2]}}))
a =
2
b =
4 % Surprise!
Но это не то же самое, как myCell {[2 4]}, который автоматически возвращается:
>> myCell{[1 2]}
ans =
2
ans =
4
я должен был бы использовать subsref с одним вывод для каждого индекса, я использую доступ myCell
, или я что-то упускаю?
Далее я исследовал ваш ответ, который привел к тому, что matlab ведет себя по-разному для методов '.get'. Оба возвращают ячейку, но при использовании методов '.get' они автоматически расширяют их до списков, разделенных запятыми. Единственная проблема заключается только в том, что 'subsref' оставляет это чувство, что оно также должно вести себя как метод' .get'. – Werner