访问嵌套在Structure Array中的Cell Array的值



我有一个嵌套的字符值structure_array/cell_array/structure_aarray,它是返回转换后的JSON对象的web查询的结果,我可以在循环中访问所需的数值,因此:

for ix = 1 : size( S.orderBook.buckets , 2 )
if ( str2double( S.orderBook.buckets{ ix }.price ) >= str2double( S.orderBook.price ) )
mid_ix = ix ;  
break ;
endif
endfor

上面的循环获得感兴趣区域中间的单元的索引mid_ix,以及

orderbook_begin_ix = mid_ix - 20 ; orderbook_end_ix = mid_ix + 20 ;
jj = 0 ;
for ix = orderbook_begin_ix : orderbook_end_ix
jj = jj + 1 ;
new_orderbook_data( 1 , jj ) = str2double( S.orderBook.buckets{ ix }.longCountPercent ) ;
endfor

第二个循环用感兴趣的值填充预初始化的矩阵neworderbookdata。

然而,我想知道是否有一种更快/更优雅的方式来获得这些值?目前,正如上面所看到的,我必须运行一个"查找"for循环,该循环包含一个"if语句",以获得所需数值的近似值,然后在近似值的区域运行第二个for循环,以提取这些所需值。

注:交叉张贴在Octave论坛

我想我已经通过使用以下语法解决了这个问题:

prices = cellfun( @str2double , { [ S.orderBook.buckets{:} ].price } ) ;

这给了我一个矩阵"价格",我可以进一步应用矢量化代码。

说明:-

  1. {:}将单元格数组中的价格提取为逗号分离列表
  2. 封闭的[]将此列表放入一个结构数组中

  3. [].price只提取价格,然后将其放回具有最外层封闭{}的单元阵列

  4. 然后通过应用cellfun对此定价cell阵列和

  5. 最终分配给"价格"矩阵。

最新更新