簡體   English   中英

Octave - 訪問八度值列表中的值

[英]Octave - Accessing Values in octave_value_list

我在使用 Octave C++ API 的同時在 C++ 開發環境中工作。

我想知道如何在調用函數時訪問返回的八度值列表中的單個值。

例如,當我調用時鍾函數時,我返回了一個 Octave_value_list,它顯示了以下內容:

2014.0000 8.0000 22.0000 10.0000 1.0000 44.7120

我現在想訪問每個值,但我不知何故只能獲得年份。 我缺少一些語法,也許有人可以幫助我。

有用的文檔來回答您的問題:


你提到的值是一個多octave_value以S octave_value_list ,或者是一個值的數組中的單個octave_valueoctave_value_list

請注意,單個octave_value度值不一定是標量值。 它可以是一個具有 n 維和多個元素的數組。 它可以是結構體、結構體數組或元胞數組。 它基本上可以是八度變量可以是的任何東西。 例如,調用:

foo ([1 2 3], "string", {678, "other string"}, struct ("over", 9000))

將創建一個octave_value_list與4 octave_value S和:

foo ([1 2 3])

仍將創建一個octave_value_list但只有一個octave_value

您需要做的第一件事是弄清楚您實際擁有什么。 您可以使用octave_value_list.length()來獲得一個想法,您可以通過簡單地用圓括號()對它們進行索引來獲得單獨的octave_value

for (int i =0; i < list.length (); i++)
    do_stuff_with (list(i));

一旦你得到一個octave_value你可以嘗試轉換成很多東西。

std::string   s  = val.string_value ();
bool          b  = val.bool_value ();
boolMatrix    bm = val.bool_matrix_value ();
Cell          c  = val.cell_value ();
NDarray       nd = val.array_value ();
int           i  = val.int_value ();
Array<double> ad = val.vector_value ();

雖然你可以使用的一個is_x()方法octave_value ,該建議是檢查的價值error_state轉換后,以檢查是否出了什么差錯。 這將提供更自然的 Octave 體驗,並將處理您期望在 Octave 中為您提供的不同類型之間的轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM