2017-07-25 218 views
0

當在matlab中使用fprintf時,我遇到了一個問題。我寫一個大字符數組,像這樣:fprintf大小限制

fileID = fopen(s,'w');         
fprintf(fileID,'%s',test_text);        
fclose(fileID); 

當輸出文本文件中的任何小於1GB,似乎工作,但會過去的,這將導致輸出文件爲空(0字節)。我相信這可能是一個32位的限制。這是正確的,如果有的話,是否有任何解決方法?

任何幫助表示讚賞,謝謝。

回答

0

我無法重現您的問題。該腳本將2GB的textdata寫入test.txt,並且運行時沒有錯誤。我在Windows 7 64位上使用matlab 2017a。 (確實需要43秒)

st = char(randi([0 255],[1,2^31],'uint8')); %2GB of textdata 
fileID = fopen('test.txt','w');         
fprintf(fileID,'%s',st);        
fclose(fileID); 

讓我感到驚訝的是,matlab每個char值使用2個字節。

+0

嗯,我只是跑你的確切代碼,它做了我所描述的,並立即輸出一個0字節的空文件。我正在使用Windows 7 64位和Matlab R2016b。我會嘗試更新到最新的2017a,然後再試一次.... – Seb

+1

爲了支持Unicode,大多數現代語言中的char數據類型都是2個字節。 – excaza