2010-01-28 32 views
2

我正在嘗試將數據集導入Mathematica。問題是我無法將導入的數據作爲Mathematica中的常規數字。它們被導入爲「列表」。所以,我不能在公式中使用它們,我需要:如何在Mathematica中以數組形式導入數據中的數據?

Import["out.dat", "Data"] 
{{5.7, 4.3}, {-1.2, 7.8}} 
Array[cc, {2, 2}] 
For[i = 1, i <= 2, i++, 
For[j = 1, j <= 2, j++, 
    cc[i, j] = Take[Import["out.dat", {"Data", i}], {j, j}]]] 

現在,我需要c[1,1]5.7但它是{5.7}當你看到:

cc[1, 1] 
{5.7} 

回答

1

首先訪問數組元素使用「 [[]]「

c = {{5.7, 4.3}, {-1.2, 7.8}}; 
    c[[1, 1]] 
    Out=5.7 

更新。

C [[1,1]]用於獲得2 維陣列(矩陣)來訪問 簡單陣列使用C [[1]]

In[27]:= Import["d:\\dat.out", "Table"]  
    Out[27]= {{5.7, 4.3, -1.2, 7.8}}  
    In[28]:= %[[1]]  
    Out[28]= {5.7, 4.3, -1.2, 7.8}  
    In[29]:= IntegerPart[#] & /@ %  
    Out[29]= {5, 4, -1, 7} 
etc... 

更新2

如果cc[1, 1] == {5.7}然後再使用數組元素選擇:

cc[1,1][[1]] 
+0

謝謝, out.dat: 5.7 \t 4.3 -1。2 \t 7.8 使用cc [[1,1]]時出現此錯誤: cc [[1,1]] Part :: partd:零件規格cc [[1,1]]長於\ 對象。 >> cc [[1,1]] – Matin 2010-01-28 12:11:22

+0

你可以發佈你的新代碼。我的猜測是你沒有使用「表」選項進行導入。 – Davorak 2010-01-29 01:30:16

1

這並不取決於你的dat文件內容的準確格式。例如,如果該文件包含只是數字選項卡(或空間)和行分離這樣的:

5.7 4.3 
-1.2 7.8 

那麼語句

cc = Import["out.dat"] 

加載數據直接進入可變立方厘米。然後,使用正確的數組下標符號,即[[和]]不是[和],您可以根據需要訪問數組每個元素中的數字。這非常非常簡單。如果你的輸入文件比較複雜,你應該(a)簡化它,或者(b)研究Import []函數的各種選項和參數。

作爲一般的規則,如果你發現自己在Mathematica中編寫循環,那麼你做得不對。

形式

c[1,1] = 5.7 

是,Mathematica的,一個函數定義。它看起來非常像賦值給一個數組中的元素,這意味着你可以定義各種有趣的對象,它們是函數,但看起來像數組,或者看起來像函數的數組。當然,這是因爲數組是從索引空間到元素集的函數。但是對於Mathematica [和]爲一個函數劃分參數。

根據你的問題和你的意見我懷疑你是Mathematica的初學者。在線文檔非常好,但您必須閱讀它才能從中獲得任何價值。

0

我想這你想要做什麼:

mat = {{5.7, 4.3}, {-1.2, 7.8}}; 
Do[c[i, j] = mat[[i, j]], {i, 2}, {j, 2}] 

則C [1,1]返回5.7(舉例)。

相關問題