2013-01-07 93 views
2

我有3個帶有浮點數據的txt文件。每個文件有17行。第一個文件有3列,其他兩個各有1列。我試圖將這些文件連接成一個大文件 - 這樣我在一個文件中就有5列這些文件。 我已經這樣做:垂直連接matlab

alldata = [ ];   
    fid2 = fopen(CombinAttrDiff, 'wt')   
NumberOfFiles = 3   
for K = 1 : NumberOfFiles %looping over all of the files   
thisfile = sprintf('AttrDiff%d.txt',K)   
thisdata = load(thisfile);   
alldata = [alldata, thisdata];   
end   
     fprintf(fid2, '%f %f %f %f %f\n',alldata);   
fclose all   

即打印出來不垂直連接文件的大輸出文件 - 第一個文件的第一列的所有值是填補由大輸出文件的行,然後取第二列和conintues按行填充它。 我在這裏做錯了什麼?也是將文件連接成一個文件的正確方式,以便稍後將其用作矩陣。我希望新創建的文件的每一行都是像這樣的向量數組a = [0.32588 0.58425 0.35887 0.00004 0.75544]。我需要這個,所以我可以在後面比較這些行(數組)。我打算在大文件上應用重塑以獲得矩陣。

我是matlab中的新手,並試圖使這項工作已經幾天了。任何幫助wopuld是值得讚賞的!謝謝!

回答

2

嘗試

fprintf(fid2, '%f %f %f %f %f\n', alldata.'); 

編輯: 爲什麼這種變化的作品?

Matlab以「列堆棧」方式將其數組存儲在內存中:也就是說,在內存中第二個元素是alldata(2,1)。所以,當你打印alldatafid2時,matlab根據它們的「內存」順序排列元素,而不管你給出的格式化字符串如何。 轉置數組更改順序以適應您的要求。

+0

謝謝 - 這很好!我會盡量記住將來使用它。 – mil

+0

也是這個連接的文件可以用作矩陣嗎?我希望新創建的文件的每一行都是像這樣的向量數組a = [0.32588 0.58425 0.35887 0.00004 0.75544]。我需要這個,所以我可以在後面比較這些行(數組)。我打算現在應用重塑嗎? – mil