2015-05-15 61 views
0

我是一個matlab初學者。目前我正在使用保存文件,如何從矩陣中選擇行

eval(['save(''results/loc_', num2str(location) ,''',''values'')']); 

我有54個位置。因此,在這種情況下,我將在一個名爲'results'的新文件夾中保存名爲loc_1,loc_2 ... loc_54的54個文件。每個文件的大小是15x7。在這種情況下,列的數量將始終保持不變。但是行數會改變。如果我只進行一次試用,那麼'loc_1'只會給出3x7的值。如果我進行2次試驗,那麼'loc_1'會給出6x7的值,依此類推。在我的情況下,我想把'試用'作爲一個變量,它的值是5.所以名爲loc_1,loc_2,..,loc_54的每個文件都會給我15x7的值。

現在我想前5行(和所有的7列)從loc_1分開,需要將其儲存在3個不同的文件,每個文件的大小將是5x7個。同樣,我將不得不保存所有loc_numstr(位置)文件(總共54個文件)並將它們分開。然後我將有3組54個文件,每個文件的大小爲5x7。在這種情況下,我正在進行5次試驗,所以我將其分隔爲每個文件大小的5x7。同樣的4次試驗,我需要考慮4x7等等。

任何形式的幫助將不勝感激。謝謝。

我想我有點複雜。你能解釋一下這個例子嗎?

我想詢問是否我有例如基質: A = [1 2 3; 1 3 4; 4 5 7; 9 10 12; 13 16 18; 22 26 29]

以及如何採取第一2行,並將它們保存在另一個文件中,然後在接下來的2行,並將它們保存在另一個文件中,並在接下來的2行,並將它們保存在另一個文件?

例如,我想存儲B = [1 2 3; 1 3 4],c = [4 5 7; 9 10 12]和d = [13 16 18; 22 26 29]

感謝

+0

你爲什麼使用'eval'?爲什麼不只是'save(['results/loc_',num2str(location)],values)'?你的問題也很難理解。什麼是「價值」? – Dan

+1

我誠實地根本不能跟隨你想要做的事情。要回答明確的問題,請參閱MATLAB的[矩陣索引](http://www.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html)文檔。這裏也不需要使用'eval'。使用['sprintf'](http://www.mathworks.com/help/matlab/ref/sprintf.html)或['strcat'](http://www.mathworks.com/help/matlab/ref/ strcat.html)來生成你的文件名。 – excaza

+0

我正在嘗試使用保存,但我很難使用它。是的,我認爲我有點複雜。你能解釋一下這個例子嗎?我通過編輯我的問題來舉例說明。 – Chris33

回答

0

對於你的榜樣,你可以使用數組切片,

a=[1 2 3 ; 1 3 4 ; 4 5 7 ; 9 10 12 ; 13 16 18 ; 22 26 29] 
for n = 1:3 
    %Indices for matrix section 
    j = 2*n; i = j-1; 
    %Get matrix section to save 
    b = a(i:j,:) 
    save(['results/loc_',num2str(n)], 'b') 
end 

我不知道保存是你想要的 - 這節省了MATLAB工作空間的變量。你想寫數字,以便其他程序可以讀取它們嗎?

+0

請忽略'保存'。我正在使用許多文件來生成最終結果。然後我使用eval函數來保存結果。我現在有54個結果。這些文件被命名爲loc_1,loc_2,... loc_54。每個文件的大小是15x7。我想要將結果文件中的行分開。例如,loc_1的大小爲15x7。現在,我要保存前5行(一個5x7點陣)在loc_test1_1,那麼接下來的5行作爲(另一個5x7點陣)loc_test2_1,然後接下來的5行(另一5x7點陣)作爲loc_test3_1。所以像這樣,我們將有loc_1文件中的3個新集。在這裏,我們有54個文件從loc_1到loc_54 – Chris33

+0

我不知道爲什麼你要保存文件的值和(我假設)在操作之間重新加載。通常寫入磁盤的效率非常低,只能在matlab會話之間保存所需的值。如果我明白接下來要做什麼,這將使用與上述完全相同的方法,但使用不同的文件名和索引。 –