簡體   English   中英

如何在Octave中探索對象的結構和尺寸?

[英]How to explore the structure and dimensions of an object in Octave?

Im Matlab, properties函數聽起來可能等效於R中的命令,該命令使您熟悉工作環境中的特定對象,並提供有關其結構(數據,框架,矩陣,列表,向量)和變量類型(字符)的信息,數字)(例如,使用R命令str() ),尺寸(可能使用調用dim() )和變量names() )。

但是,此功能在八度中不起作用:

>> properties(data)
warning: the 'properties' function is not yet implemented in Octave

我按照上面鏈接的評論中的建議安裝了軟件包dataframe

pkg install -forge dataframe並加載pkg load dataframe pkg install -forge dataframe

但是我找不到一種方法來獲取工作區中datset data.mat的結構和尺寸的摘要。

我相信它是一個由4 x 372,550數值矩陣組成的結構; 兩個4 x 46,568數值矩陣和256 x 1字符矩陣。 為了獲得此信息,我必須滾動瀏覽數據打印輸出的許多頁面。

此信息在Octave IDE上不可用,我在這里獲得:

Name      Class     Dimensions
data      struc     1 x 1

與對象data的復雜性相去甚遠。

在Octave的工作空間中獲取有關對象的某些信息的明智方法是什么?


遵循提供的第一個答案,這是我對whos

>> whos
Variables in the current scope:

   Attr Name        Size                     Bytes  Class
   ==== ====        ====                     =====  =====
        data        1x1                    7452040  struct

Total is 1 element using 7452040 bytes

這並不是關於data真正包含什么的特別有用的信息。 實際上,我只是找到了一種提取data內部名稱的data

>> fieldnames(data)
ans =
{
  [1,1] = testData
  [2,1] = trainData
  [3,1] = validData
  [4,1] = vocab
}

現在如果我打電話

>> size(data)
ans =

   1   1

輸出不是很有用。 另一方面,知道我可以做的data矩陣的名稱

>> size(data.trainData)
ans =

        4   372550

這確實是有益的。

如果鍵入變量的名稱,將看到有關它的信息。 在您的情況下,它是一個結構,因此它將告訴您字段名稱。 相關功能包括: sizendimsclassfieldnames等。

size(var)
class(var)

等等

您引用.mat 也許您有一個MAT文件,可以使用load filename 加載后,您可以檢查和使用文件中的變量。

whos

在內存中的變量上打印簡單信息,這對於查看存在哪些變量最有用。


跟進您編輯過的問題。 這在八度中有效:

for s=fieldnames(data)'
   s=s{1};
   tmp=data.(s);
   disp([s,' - ',class(tmp),' - ',mat2str(size(tmp))])
end

它輸出該結構的每個成員的基本信息。 它確實假定data是1x1結構數組。 請注意,結構可以是數組:

data(2).testData = [];

使您的data結構為2x1數組。 這就是為什么size(data)很重要。 class也很重要(在whos的輸出中顯示。變量可以是double類型(普通數組),也可以是其他數值類型, logicalstructcell (數組數組)或可以編寫自己的自定義類。

我強烈建議您在MATLAB / Octave上閱讀介紹性文本,因為它的工作原理與R截然不同。它不僅是一種不同的語言,而且是一個完全不同的世界。

暫無
暫無

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

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