Matlab中有没有函数形式可以得到与A{:}相同的结果?

问题描述 投票:0回答:1

我知道这是一个经典问题,其中的某些方面之前已得到解答,例如:如何索引函数返回的 MATLAB 数组而不首先将其分配给局部变量?

但是通过阅读评论可以清楚地看出,i)一些提议的解决方案不再起作用(基于内置或 feval 的解决方案)或 ii)不适用于某些类别或索引。

特别对于元胞数组 A,

A{:}
subsref(A,substruct('{}',{':'}))
的结果并不相同。

为了完整起见,我想指出

cell2mat(A)
A{:}
不同,也没有帮助。

arrays matlab cell-array
1个回答
0
投票

我在 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
© www.soinside.com 2019 - 2024. All rights reserved.