2013-04-17 79 views
-3

我使用IMPORTDATA提取ASCII文件作爲例子IMPORTDATA:問題

u(1,1) = importdata('folder/file1_1.asc' ' ', 9) 
u(1,2) = importdata('folder/file1_2.asc' ' ', 9) 
u(2,1) = importdata('folder/file2_1.asc' ' ', 9) 

等提取數據的時候。 現在我必須提取數據。一切都很好,如果我這樣做

a = u(1,1).data(:,2) 

,但如果不是我做

a(1,1) = u(1,1).data(:,2) 

則MATLAB返回一個錯誤(下標賦值尺寸不匹配),不運行。我應該提取272個數據集,因此我按照上面的方法進行操作。這是一個錯誤?我該怎麼辦?

回答

0

經過a = u(1,1).data(:,2)什麼是size(a)?我打賭它不是[1 1]!您正試圖將數組,即data(:,2)放入一個單元中,即a(1,1)。也許你想把它放在單元陣列中呢?

a{1,1} = u(1,1).data(:,2) 

否則這樣的事情(我在你的數據結構猜測這裏雖然)

a(1:272,1) = u(1,1).data(:,2) 
+0

我想他們兩個。 {1,1} = u(1,1).data(:,2)返回單元格內容分配給非單元格數組對象,而a(1:1001,1)= u(1,1).data (:,2)返回下標的分配維度不匹配。奇怪的是,如果我輸入a = u(1,1).data就沒有問題了:a變成一個包含我需要的元素的數組。 – ragnar

+0

是的,但是size(u(1,1).data(:,2))是什麼,除非它是[[1001,1]],那麼毫不奇怪a(1:1001,1)= u 1,1).data(:,2)'不起作用。你必須在任務的兩邊都有相同的尺寸!至於單元格矩陣的錯誤,請確保先清除''a''。試試這個:'清楚; u(1,1).data = rand(10) a {1,1} = u(1,1).data(:,2); b(1:10,1)= u(1,1).data(:,2)',你會發現兩種方法實際上都起作用 – Dan