Data structures 深入嵌套在结构数组中的单元格数组的访问值

Data structures 深入嵌套在结构数组中的单元格数组的访问值,data-structures,octave,cell-array,Data Structures,Octave,Cell Array,我有一个嵌套的字符值结构数组/单元格数组/结构数组,它是web查询的结果,返回一个转换的JSON对象,我可以在循环中访问所需的数值,因此: 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

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

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

以上循环获取感兴趣区域中部的细胞的索引,MIDixIX,和

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
第二个循环使用感兴趣的值填充预先初始化的矩阵new_orderbook_data

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


注意:交叉张贴在

我想我已经用下面的语法解决了这个问题:

prices = cellfun( @str2double , { [ S.orderBook.buckets{:} ].price } ) ;
这给了我一个矩阵“价格”,我可以进一步应用矢量化代码

说明:-

  • {:}将单元格数组中的价格提取为逗号 单独列表
  • 封闭的[]将此列表放入结构数组中

  • [].price只提取价格,然后将其放回 最外层包含{}的单元格数组

  • 然后通过应用 cellfun为该单元阵列和

  • 最终分配给“价格”矩阵


  • 我想我已经用下面的语法解决了这个问题:

    prices = cellfun( @str2double , { [ S.orderBook.buckets{:} ].price } ) ;
    
    这给了我一个矩阵“价格”,我可以进一步应用矢量化代码

    说明:-

  • {:}将单元格数组中的价格提取为逗号 单独列表
  • 封闭的[]将此列表放入结构数组中

  • [].price只提取价格,然后将其放回 最外层包含{}的单元格数组

  • 然后通过应用 cellfun为该单元阵列和

  • 最终分配给“价格”矩阵


  • 存储为字符串的数字使其难以处理。我建议先把它们转换成数字。一旦这样做了,剩下的部分就可以使用矢量化代码了。存储为字符串的数字使它们很难处理。我建议先把它们转换成数字。完成后,您就可以对其余部分使用矢量化代码。