我有一个嵌套的character_array / cell_array / structure_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
上面的循环获取感兴趣区域中间的单元格的索引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
第二个循环用感兴趣的值填充预初始化的矩阵new_orderbook_data。
但是,我想知道是否有更快/更优雅的方式来获得这些价值?如上所示,目前,我必须运行“查找” for循环,其中包含“ if语句”以获取所需数值的范围,然后在该区域中运行第二个for循环提取这些所需值。
注意:交叉发布在Octave论坛上
我想我已经通过使用以下语法解决了这个问题:
prices = cellfun( @str2double , { [ S.orderBook.buckets{:} ].price } ) ;
这给了我一个矩阵“价格”,我可以进一步将其应用矢量化代码。
说明:-
封闭的[]将此列表放入结构数组中,
[] .price仅提取价格,然后将价格放回最外面的{}单元格数组中
然后通过将cellfun应用于此价格单元格数组,将字符串值转换为数字
最后分配给“价格”矩阵。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句