文字値のネストされたstructure_array / cell_array / structure_arrayがあります。これは、変換された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
この2番目のループは、事前に初期化された行列new_orderbook_dataを対象の値で埋めます。
しかし、これらの値を取得するためのより迅速でエレガントな方法があるかどうか疑問に思っていましたか?現時点では、上記のように、「ifステートメント」を囲む「ルックアップ」forループを実行して必要な数値の球場に入り、次にその領域で2番目のforループを実行する必要があります。これらの必要な値を抽出するための球場の。
注:Octaveフォーラムにクロス投稿
以下の構文を使用してこれを解決したと思います。
prices = cellfun( @str2double , { [ S.orderBook.buckets{:} ].price } ) ;
これにより、ベクトル化されたコードをさらに適用できるマトリックス「価格」が得られます。
説明:-
囲んでいる[]は、このリストを構造体配列に入れます。
[] .priceは価格だけを抽出し、それを最も外側の{}で囲むセル配列に戻します。
次に、cellfunをこの価格のセル配列に適用して文字列値を数値に変換し、
最終的に「価格」マトリックスに割り当てられます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加