matlab中单元格数组元素的线性索引

bla*_*bla 3 indexing matlab cell

考虑以下单元格数组:

A={1:3,[20,40],100}

A =

1×3 cell array

   {1×3 double}    {1×2 double}    {[100]}
Run Code Online (Sandbox Code Playgroud)

我想要一种方法来检索存储它的值的​​线性索引,例如,如果我使用以下方法展平数组:

[A{:}]

ans =

     1     2     3    20    40   100
Run Code Online (Sandbox Code Playgroud)

我可以看到第4个线性索引是20等等.所以有没有类似于矩阵线性索引的方法,它将为我提供一个单元格数组中A((4))的值20?(我当然只是(())为了说明的目的发明了符号.

Lui*_*ndo 5

据我所知,没有直接的解决方案.这是实现这一目标的一种方法.即使内部数组不是行向量,它也可以工作; 在这种情况下,它们被隐含地视为线性化的.

A = {1:3,[20,40],100}; % data
ind = 4; % linear index into flattened data
s = [0 cumsum(cellfun(@numel, A))];
ind_outer = find(ind<=s, 1) - 1;
ind_inner = ind - s(ind_outer);
result = A{ind_outer}(ind_inner);
Run Code Online (Sandbox Code Playgroud)