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
?(我当然只是(())
为了说明的目的发明了符号.
据我所知,没有直接的解决方案.这是实现这一目标的一种方法.即使内部数组不是行向量,它也可以工作; 在这种情况下,它们被隐含地视为线性化的.
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)