我知道这是一个经典问题,其中的某些方面之前已得到解答,例如:如何索引函数返回的 MATLAB 数组而不首先将其分配给局部变量?
但是通过阅读评论可以清楚地看出,i)一些提议的解决方案不再起作用(基于内置或 feval 的解决方案)或 ii)不适用于某些类别或索引。
特别对于元胞数组 A,
A{:}
和 subsref(A,substruct('{}',{':'}))
的结果并不相同。
为了完整起见,我想指出
cell2mat(A)
与 A{:}
不同,也没有帮助。
我在 R2019b 中进行了测试,
subsref(A,substruct('{}',{':'}))
似乎返回与 A{:}
相同的结果,即元胞数组内容的 逗号分隔列表。但是,由于 subsref
是一个函数,因此您需要指定想要的输出数量;默认情况下它只提供第一个。比较:
>> A = {'xy', [10 20 30]};
>> A{:}
ans =
'xy'
ans =
10 20 30
>> subsref(A,substruct('{}',{':'}))
ans =
'xy'
>> [a, b] = subsref(A,substruct('{}',{':'}))
a =
'xy'
b =
10 20 30