處理我有一個大的文本文件,幾乎150 MB到500 MB,該文件包含20條LACS線...文件文件在MATLAB
內容是這樣的....
USDINR12AUGFUT 1 1343791803 579782 2012-08-01 09:00:03 BID 55.5725 200
USDINR12AUGFUT 2 1343791803 594246 2012-08-01 09:00:03 BID 55.9650 150
USDINR12AUGFUT 3 1343791803 594570 2012-08-01 09:00:03 ASK 56.0700 100
USDINR12AUGFUT 4 1343791803 946831 2012-08-01 09:00:03 ASK 56.0450 500
USDINR12AUGFUT 5 1343791804 16514 2012-08-01 09:00:04 TRADE 55.9650 5 55965.00 5
USDINR12AUGFUT 6 1343791804 19401 2012-08-01 09:00:04 BID 55.9800 14
USDINR12AUGFUT 7 1343791804 32311 2012-08-01 09:00:04 BID 56.0000 100
USDINR12AUGFUT 8 1343791804 33292 2012-08-01 09:00:04 ASK 56.0400 150
USDINR12AUGFUT 9 1343791804 34695 2012-08-01 09:00:04 TRADE 56.0000 1 55970.83 6
USDINR12AUGFUT 10 1343791804 35599 2012-08-01 09:00:04 TRADE 56.0000 1 55975.00 7
USDINR12AUGFUT 11 1343791804 36626 2012-08-01 09:00:04 TRADE 56.0000 1 55978.12 8
USDINR12AUGFUT 12 1343791804 53676 2012-08-01 09:00:04 TRADE 56.0000 60 55997.43 68
USDINR12AUGFUT 13 1343791804 57434 2012-08-01 09:00:04 TRADE 56.0000 25 55998.12 93
USDINR12AUGFUT 14 1343791804 57967 2012-08-01 09:00:04 TRADE 56.0000 1 55998.14 94
USDINR12AUGFUT 15 1343791804 60474 2012-08-01 09:00:04 TRADE 56.0000 1 55998.16 95
USDINR12AUGFUT 16 1343791804 60988 2012-08-01 09:00:04 TRADE 56.0000 1 55998.18 96
USDINR12AUGFUT 17 1343791804 61232 2012-08-01 09:00:04 TRADE 56.0000 1 55998.20 97
USDINR12AUGFUT 18 1343791804 61974 2012-08-01 09:00:04 TRADE 56.0000 1 55998.21 98
USDINR12AUGFUT 19 1343791804 62449 2012-08-01 09:00:04 TRADE 56.0000 1 55998.23 99
我的問題是我想對MATLAB使用這個文件做一些測試,所以我必須導入這個文件。但每當我使用fopen
和textscan
MATLAB拋出一個錯誤說...
??? Error using ==> textscan
Out of memory. Type HELP MEMORY for your options.
但是當我使用20-50 MB的文件運行良好。
如何克服這一點?幫我...
我的代碼:
% file_path = 'E:\volume\august\AUG03.MCX';
file_path = 'D:\home\flexsys\pavan\usdinr_t\USDINR12AUGFUT.MCX';
fid = fopen(file_path);
C = textscan(fid,'%s %d %d %d %s %s %s %f %d %f %d');
n = length(C{1});
for i = 1 : n
raw_data.symbol(i) = C{1}(i);
raw_data.trade_no(i) = C{2}(i);
raw_data.utc_sec(i) = C{3}(i);
raw_data.utc_nano(i) = C{4}(i);
raw_data.date(i) = C{5}(i);
raw_data.time(i) = C{6}(i);
raw_data.trade_type(i) = C{7}(i);
raw_data.ltp(i) = C{8}(i);
raw_data.ltq(i) = C{9}(i);
raw_data.vwap(i) = C{10}(i);
raw_data.volume(i) = C{11}(i);
% % % some back testing here.
end
我已經存儲的所有數據C
變量,那還有錯誤
你需要一次所有的數據嗎?如果不是,並且數據太大以至於無法放入內存中,則可以通過行讀取它,並且每次一個一個地處理。 – Amro 2013-02-08 12:53:01
我正在做的是我正在讀取一個變量中的所有數據,然後我找到平均值基於ltp的60個值等等....所以我怎樣才能處理這一行一行...在一些函數中,我需要大約200行中的60行數據等...因爲我只採用TRADE來自文件的行。 – user2010340 2013-02-08 13:06:54
textscan確實支持指定應用格式字符串的次數的'N'參數:'textscan(fid,frmt,60)'。下一次它被叫,它繼續它停止的地方。 – Amro 2013-02-08 13:20:13